본문 바로가기

문제 풀이/Baekjoon

[백준] B5 2338번 긴자리 계산 (JAVA)

문제 출처 - Baekjoon Online Judge

문제는 여기

 

2338번: 긴자리 계산

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

www.acmicpc.net

[문제] 

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

[입력]

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

[출력]

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

 

 


[풀이]

1. 두 수를 BigInteger를 사용해서 입력받아준다.

2. BigInteger의 연산을 이용해 결과를 출력한다.

[접근]

1. 숫자의 범위가 1000자리이므로 Integer로는 처리가 불가능하여 BigInteger를 사용하여 문제를 해결해야겠다고 생각했다.

  1. 더하기 : add()
  2. 빼기 : subtract()
  3. 곱하기 : multiply()
  4. 나누기 : divide()

2. 위 연산을 사용해 문제를 해결하면 되겠다고 생각하였다.

[코드]

package BOJ_bronze;

import java.math.BigInteger;
import java.util.Scanner;

public class Main_B5_2338 {

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

		BigInteger a = sc.nextBigInteger();
		BigInteger b = sc.nextBigInteger();

		System.out.println(a.add(b));
		System.out.println(a.subtract(b));
		System.out.print(a.multiply(b));
	}
}