반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

개발 쥬스

[프로그래머스/Java] 181846 두 수의 합 본문

알고리즘

[프로그래머스/Java] 181846 두 수의 합

DevJuice 2024. 11. 14. 16:15
반응형

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/181846

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

🔍  해결 과정

두 수의 합을 구하는 문제이지만 Integer와 Long의 범위를 벗어나는 수를 합한 결과까지 출력을 해야하는 문제입니다.

따라서 이 문제는 직접 문자열의 숫자 한자리씩 살펴가며 직접 덧셈 연산을 진행해주어야 합니다.

참고로 Java 기준 자료형의 각 범위는 다음과 같습니다.

정수형 타입 메모리 크기 데이터 표현 범위
byte 1 바이트 -128 ~ 127
short 2 바이트 -32,768 ~ 32,767
int 4 바이트 -2,147,483,648 ~ 2,147,483,647
long 8 바이트 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

 

 


✏️ 코드

class Solution {
    public String solution(String a, String b) {
        StringBuilder answer = new StringBuilder();
        int a_idx = a.length() - 1;
        int b_idx = b.length() - 1;
        int carry = 0;
        
        while (a_idx >= 0 || b_idx >= 0 || carry > 0) {
            int sum = carry;
            
            if (a_idx >= 0) {
                sum += a.charAt(a_idx--) - '0';
            }
            
            if (b_idx >= 0) {
                sum += b.charAt(b_idx--) - '0';
            }
            carry = sum / 10;
            sum %= 10;
            answer.append(sum);
        }
        
        return answer.reverse().toString();
    }
}
반응형