💻 문제


일단 이해하자🤔
- 11382번 꼬마정민이 문제에서는
long 타입을 써야하는 걸 int형으로 써서 틀렸던 기억이 나서 이번엔 범위를 자세히 보고 푸려했다.
long의 최댓값을 찾아보니 9223372036854775807이라고 하는데 예제는 9223372036854775807와 9223372036854775808를 계산한다. 즉 long보다 더 큰 범위를 표현할 수 있는 BigInteger를 사용하기로 했다.
BigInteger는 new BigInteger()로 선언해주고 직접 연산을 하지는 못해서 add(), subtract(), multiply()와 같은 함수를 사용해서 연산을 해줘야한다.
👀 풀이
import java.io.*;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = bfr.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
BigInteger A = new BigInteger(st.nextToken());
BigInteger B = new BigInteger(st.nextToken());
bfw.write(String.valueOf(A.add(B)));
bfr.close();
bfw.flush();
bfw.close();
}
}
💡 결과

아쉬웠던 점••
BigDecimal을 사용해본 적은 있었으나 오랫동안 사용하지 않아 잊고 있었는데 이러한 큰 범위의 수를 다루는 방법에 익숙해져야겠다.