코딩테스트/Programmers Lv.0 (기초)

두 수의 합

soooy0 2025. 4. 2. 11:18

문제 설명

0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 1 ≤ a의 길이 ≤ 100,000
  • 1 ≤ b의 길이 ≤ 100,000
  • a와 b는 숫자로만 이루어져 있습니다.
  • a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.

입출력 예

a b result

"582" "734" "1316"
"18446744073709551615" "287346502836570928366" "305793246910280479981"
"0" "0" "0"

나의 답안

// 정수형으로 푠할 수 있는 값의 한계로 인해 더 큰 값을 다뤄야 할 경우 BigInteger클래스를 사용한다.long 타입보다 훨씬 큰 값을 다룰 수 있다.
// BigInteger에 정의된 정수형에 사용할 수 있는 연산 메서드를 사용한다.

import java.math.*;

class Solution {
    public String solution(String a, String b) {
        
        // return
        String answer = "";
        
        //BigInteger 객체를 a, b 문자열을 사용하여 생성
        BigInteger val_a = new BigInteger(a);
        BigInteger val_b = new BigInteger(b);
        
        // 산술 연산자 사용하여 result에 더한 값을 저장
        BigInteger result = val_a.add(val_b);
        
        // 문자열로 변환하여 return
        answer = result.toString();
    
        return answer;
    }
}
💡**회고

문자열 숫자를 int형으로 변환 -> 숫자가 int형 범위를 벗어나므로 Long으로 설정 -> doblue도 벗어남(당연함ㅎ)
한참 헤매다 책을 찾아본 결과.. 잊고 있던 java.math.BigInteger 클래스를 발견..! 해당 클래스에 정의된 덧셈 메서드를 사용해서 풀이했다. 하지만 성능이 엄청 떨어짐. 그리고 나는 result 변수를 따로 선언해서 풀이했지만, 바로 return val_a.add(val_b).toString(); 으로 반환해도 될 듯 하다.

소요시간: 1시간

 

'코딩테스트 > Programmers Lv.0 (기초)' 카테고리의 다른 글

배열 만들기 4  (0) 2025.03.28