알고리즘/백준

[BeakJoon] 백준 10757번_ 큰 수 A+B for Java

정석이 2021. 9. 21. 16:45

https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

먼저 이 문제를 일반적인 Scanner를 이용하여 int로 받아 출력해보았다.

 

 

 

 

 

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가 더 편해서 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

 

 

 

 

확실히 BufferedReader를 사용하는게 메모리랑 시간 면에서 효율적이다!

 

 

 

 

 

 

 

 

 

 

 

 

 

그냥 덧셈 문제였지만 정답률이 48프로인 이유가 있었다.... test case를 잘 보고! int의 정수 범위같은 기본적인 것들도 잘 신경쓰도록 해야지!