BigInteger
코테 문제를 풀다가
여기에서 a와 b가 long으로도 변환이 안되는 큰 수로 인해 계산을 어떻게 해야할지 몰랐다.
a : “18446744073709551615”, b : “287346502836570928366”, result : “305793246910280479981”
a와 b를 long으로 변환을 시키면 NumberFormatException 오류가 떴다.
BigInteger
docs.oracle 를 참고하여 코드를 작성했다.
1
2
3
4
5
6
7
8
9
10
import java.math.*;
class Solution {
public String solution(String a, String b){
String answer = "";
BigInteger aa = new BigInteger(a);
BigInteger bb = new BigInteger(b);
answer = String.valueOf(aa.add(bb));
return answer;
}
}
BigInteger는 long 형을 넘는 더 큰 범위의 정수를 다룰 때 사용하는 클래스로 사칙연산 대신 메소드를 사용해야한다.
참고로 BigInteger은 정수 , BigDecimal은 실수를 다룬다.