문제 : https://www.acmicpc.net/problem/10824

풀이방법


이 문제도 앞에서 풀어보았던 10822, 10823과 같은 형식의 문제라고 생각하고 간단하게 접근을 했습니다. 로직을 다 짜고 실행시켜보니 런타임 에러…? 그래서 왜 런타임 에러가 날까 생각을 해보았습니다. 그리고 문제를 자세히 다시 읽어보니 입력받을 수 있는 네 수 A,B,C,D 모두 1~1,000,000의 범위를 가지고 있었습니다. 이렇게 큰 범위의 수는 int형으로 처리할 수 없기 때문에 이러한 큰 수를 다룰 수 있는 자료형인 BigInteger를 사용해야 합니다.

또한 BigInteger는 객체이기 때문에 그냥 더할 수 없습니다. **add()**라는 메소드를 사용하여 BigInteger 객체끼리 더해줘야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.*;
import java.math.BigInteger;

public class BOJ10824 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

String input = bf.readLine();
String[] words = input.split(" ");

String ab = words[0]+words[1];
String cd = words[2]+words[3];

BigInteger big1 = new BigInteger(ab);
BigInteger big2= new BigInteger(cd);
bw.write(big1.add(big2)+"\n");
bw.flush();
bw.close();
bf.close();
}
}