
import java.math.BigInteger;
class Solution {
public String solution(String a, String b) {
BigInteger num1 = new BigInteger(a);
BigInteger num2 = new BigInteger(b);
BigInteger sum = num1.add(num2);
return sum.toString();
}
}

입출력 예에서 '18446744073709551615', '287346502836570928366'는 int와 long의 범위를 넘어서므로 NumberFormatException이 발생한다.
숫자 자료형 별 범위
int: -2,147,483,648 ~ 2,147,483,647long: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807float
음수 범위 : -3.4 × 10^38 에서 -1.4 × 10^-45
양수 범위 : 1.4 × 10^-45 에서 3.4 × 10^38double
음수 범위 : -1.7 × 10^308 에서 -4.9 × 10^-324
양수 범위 : 4.9 × 10^-324 에서 1.7 × 10^308
double과 float은 범위는 넓지만 위와 같이 큰 수를 표현하기에 정확성이 떨어지므로 BigInteger나 BigDecimal을 사용해야 함.
BigInteger 클래스를 사용하기 위해선 아래 코드를 입력하여 불러와야 한다.
import java.math.BigInteger;
.add(BigInteger val) : 현재 BigInteger 값에 주어진 BigInteger 값을 더한 결과를 반환
.subtract(BigInteger val): 현재 BigInteger 값에서 주어진 BigInteger 값을 뺀 결과를 반환
.multiply(BigInteger val): 현재 BigInteger 값에 주어진 BigInteger 값을 곱한 결과를 반환
.divide(BigInteger val): 현재 BigInteger 값에서 주어진 BigInteger 값을 나눈 몫을 반환
.remainder(BigInteger val): 현재 BigInteger 값을 주어진 BigInteger 값으로 나눈 나머지를 반환
.pow(int exponent): 현재 BigInteger 값을 제곱한 결과를 반환
.compareTo(BigInteger val): 현재 BigInteger 값과 주어진 BigInteger 값을 비교하여 크면 1, 같으면 0, 작으면 -1을 반환
.equals(Object obj): 현재 BigInteger 값과 주어진 객체가 같은지 여부를 확인