[백준] 10757번 - 큰 수 A + B

2022. 7. 12. 12:24백준/Java

 

문제로 가는 링크: https://www.acmicpc.net/problem/10757

등급: 브론즈5

알고리즘 분류: 수학, 구현, 사칙연산, 임의 정밀도/ 큰 수 연산

 

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 65123 29345 25498 48.581%

문제

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

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 10^10000)

출력

첫째 줄에 A+B를 출력한다.

 

문제 이해

A와 B의 범위는 long의 범위인 2^63-1을 훨씬 초과한다.

따라서 기본 타입의 의존해서는 문제 풀이에서 오버플로우가 발생하게 된다. 

Java 의 java.math.BigInteger에서는

BigInteger라는 클래스를 제공하는데 이 자료형에 담을 수 있는 범위는 무한대이다. 

 

아래는 Biginteger의 연산 메서드이다. 

add(Biginteger val); // 더하기
subtract(Biginteger val); 	// 빼기
mutiply(Biginteger val);	// 곱하기 
devide(Biginteger val);		// 나누기
equals(Object x);           // 값이 같은지 비교

 

코드 구현

import java.io.*;
import java.math.BigInteger;

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

        String[] str = br.readLine().split(" ");
        BigInteger A = new BigInteger(str[0]);
        BigInteger B = new BigInteger(str[1]);

        BigInteger S = A.add(B);
        System.out.println(S);
    }
}

 

결과

 

느낀점

BigInteger를 이용하지 않고, 다른 방법으로 시간과 메모리를 절약할 방법은 없을 지 고민해봐야 겠다. 

'백준 > Java' 카테고리의 다른 글

[백준] 2490번 - 윷놀이  (0) 2022.07.11
[백준] 5622번 - 다이얼  (0) 2022.07.10