백준BOJ/JAVA : 2338번 긴자리 계산

2338번 : 긴자리 계산 원본

알고리즘 분류

  • 수학
  • 사칙연산
  • 임의 정밀도 / 큰 수 연산

문제

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

입력

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

출력

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

풀이

정수 자료형 표현

  • byte / 8bits / -2^7 ~ 2^7-1 (-128 ~ 127)
  • short / 16bits / -2^15 ~ 2^15-1 (-32768 ~ 32767)
  • int / 32bits / -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647)
  • long / 64bits / -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807)

정수 자료형으로 1000자리 숫자를 표현할 수 없기 때문에 BigInteger이라는 클래스를 이용한다.

  • BigInteger : java.math 패키지에 포함된 클래스로 문자열 형태로 숫자를 무한대로 받을 수 있음

소스 코드

public class Baek2338 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);

        BigInteger n = scanner.nextBigInteger();
        BigInteger m = scanner.nextBigInteger();

        System.out.println(n.add(m));
        System.out.println(n.subtract(m));
        System.out.println(n.multiply(m));

        scanner.close();
    }
}
이 글이 도움이 되었나요?
0 minutes ago
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.