https://www.acmicpc.net/problem/10757
먼저 이 문제를 일반적인 Scanner를 이용하여 int로 받아 출력해보았다.
이 문제는 10의 10000승까지 입력받을 수 있으므로 -2147483647 ~ 2147483647 까지만 들어갈 수 있는 int값은 사용할 수 없다.
long타입도... -9223372036854775808 ~ 9223372036854775807 라서 넘어간다~~!!
그러므로 다른 방법을 사용해야하는데 이리저리 찾아보다 BigInteger라는 것을 알게되었다.
BigInteger는 문자열 형태로 이루어져 숫자의 범위를 무한하게 사용할 수 있으며 java.math패키지 안에 들어있다.
Beak10757
import java.math.BigInteger;
import java.util.Scanner;
public class Beak10757 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
BigInteger A = scan.nextBigInteger();
BigInteger B = scan.nextBigInteger();
System.out.println(A.add(B));
scan.close();
}
}
BigInteger는 A+B는 사용할 수 없고 클래스 내부 메서드를 사용해야 한다. 그래서 add 사용함.
scanner가 더 편해서 scanner를 사용하였는데 bufferedReader/Writer도 사용해보겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Beak10757 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
BigInteger A = new BigInteger(st.nextToken());
BigInteger B = new BigInteger(st.nextToken());
System.out.println(A.add(B));
}
}
확실히 BufferedReader를 사용하는게 메모리랑 시간 면에서 효율적이다!
그냥 덧셈 문제였지만 정답률이 48프로인 이유가 있었다.... test case를 잘 보고! int의 정수 범위같은 기본적인 것들도 잘 신경쓰도록 해야지!
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 1978번 _소수찾기 for Java (0) | 2021.09.25 |
---|---|
[BaekJoon] 백준 1011번 _Fly me to the Alpha Centauri for JAVA (0) | 2021.09.24 |
[BaekJoon] 백준 2839번_설탕 배달 for Java (0) | 2021.09.19 |
[BaekJoon] 백준 2775번_부녀회장이 될테야 for Java (0) | 2021.09.13 |
[BaekJoon] 백준 10250번_ACM 호텔 forJava (0) | 2021.09.06 |