긴자리 계산
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
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
'백준-단계별문제풀이' 카테고리의 다른 글
11170번 / Java (0) | 2022.03.27 |
---|---|
2751번 - JAVA (0) | 2022.03.06 |
2588번 - C++ (0) | 2021.05.04 |