본문 바로가기

백준-단계별문제풀이

2338번 - JAVA

긴자리 계산

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2초 128 MB 13701 5900 5488 51.410%

 

문제

두 수 A, B를 입력받아, A+B, A-B, A×B를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A가, 둘째 줄에 B가 주어진다. 각각의 수는 10진수로 1,000자리를 넘지 않으며 양수와 음수가 모두 주어질 수 있다.

 

 

출력

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미).

 

 

 


 

예제 입력

1
-1

 

 

예제 출력

0
2
-1

 

 

 


 

정답 코드

import java.util.*;
import java.math.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        BigInteger a = new BigInteger(sc.next());
        BigInteger b = new BigInteger(sc.next());
        
        System.out.println(a.add(b));
        System.out.println(a.subtract(b));
        System.out.println(a.multiply(b));
    }
}

 

  • BigInteger bigNum = new BigInteger("str");
    • int나 long 타입의 크기를 넘어가는 수는 BigInteger를 사용한다.
    • 기본적으로 문자열 타입을 계산하기 때문에 인수도 문자열을 넣어준다.

 

 


 

 

BigInteger에 대해

BigInteger는 int나 long타입의 크기를 넘어갈 경우에 사용한다. 그래서 크기에 제한이 없는 문자열을 사용한다. 

이 문제에서 확인해야하는 건 입력의 조건인 '각각의 수는 10진수로 1,000자리를 넘지 않으며' 이다. 즉 1000자리까지 가능하다는 소리이다. 백준 문제를 풀면서 일부러 int로 담지 못하는 수를 입력으로 넣거나 하는 경우가 많이 있기 때문에 사용법을 알아야 한다.

 

 

 

import

import java.math.*;

 

선언

BigInteger bigNum = new BigInteger("100");

BigInteger는 문자열로 이루어져있기 때문에 문자열을 인자로 넣어 변수를 선언해야 한다.

 

 

사용법(계산)

BigInteger a = new BigInteger("100");
BigInteger b = new BigInteger("20");

//덧셈
System.out.println(a.add(b)); //120

//뺄셈
System.out.prinln(a.subtract(b)); //80

//곱셈
System.out.println(a.multiply(b)); //200

//나눗셈
System.out.println(a.divide(b)); //5

//나머지
System.out.println(a.remainder(b)); //0

 

 

사용법(형변환)

BigInteger a = new BigInteger("100");

//BigInteger to int
a.intValue();

//BigInteger to long
a.longValue();

//BigInteger to float
a.floatValue();

//BigInteger to double
a.doubleValue();

//BigInteger to String
a.toString();

 

 

사용법(두 수 비교)

BigInteger a = new BigInteger("100");
BigInteger b = new BigInteger("200");

//두 수가 같을 경우 0, 다를 경우 -1 리턴
System.out.println(a.compareTo(b)); //-1

 

 

 

 

 

 

 

2338번: 긴자리 계산

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미).

www.acmicpc.net

 

'백준-단계별문제풀이' 카테고리의 다른 글

11170번 / Java  (0) 2022.03.27
2751번 - JAVA  (0) 2022.03.06
2588번 - C++  (0) 2021.05.04