0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
테스트 2번(a : 18446744073709551615, b : 287346502836570928366)의 경우 Integer.parseInt()와 Long.parseLong()로 파씽할 수 있는 범위의 값을 넘어섰고, 그래서 NumberFormatException이 발생했었다.
이를 처리하기 위해 try~catch 구문을 사용해 예외가 발생한 경우에만 별도의 처리를 하기로 했다. 큰 정수를 다루기 위해 내가 찾은 방법은 BigInteger였다.
BigInteger
import java.math.*필수BigInteger num = new BigInteger(String or Byte)로 초기화를 진행해야 한다.
add() 메서드를 활용해 둘을 더한다. (Biga + Bigb 🙅♀️)toString() 메서드를 활용해 BigInteger 타입에서 String 타입으로 형변환한다. (String.valueOf(Biga.add(Bigb)) 🙅♀️)연산 및 형변환 시 BigInteger 만의 메서드가 별도로 존재해 공부하는 것이 흥미로웠다.
import java.math.*;
class Solution {
public String solution(String a, String b) {
String answer = "";
try{
answer = String.valueOf(Integer.parseInt(a) + Integer.parseInt(b));
}catch(NumberFormatException e){
BigInteger Biga = new BigInteger(a);
BigInteger Bigb = new BigInteger(b);
answer = (Biga.add(Bigb)).toString();
}
return answer;
}
}
