티스토리 뷰

반응형

www.acmicpc.net/problem/2338

 

2338번: 긴자리 계산

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

www.acmicpc.net

 


 

 

 문제

 입력

 출력

 예제 입출력

 알고리즘 분류

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

 


 

 문제 접근 과정

 

 

입력 조건을 보면 10진수로 1,000자리를 넘지 않는 수라고 한다.

10진수로 1,000자리면 엄청나게 큰 수이다.

int Type으로는 부족하다.

그래서 int가 아닌 문자열 형태로 이루어져 있어 숫자의 범위가 무한인

BigInteger를 이용해 문제에 접근했다.

 

 


 

 BigInteger

  • int와 BigInteger의 차이점

       int의 범위는 '-2,147,483,648~2,147,483,647'이지만

       BigInteger의 범위는 문자열 형태로 이루어져 있어 무한이다.

 

  • BigInteger 계산법

      문자열 형태로 이루어져 있기에 사칙연산이 안된다.

      따라서 BigInteger의 값을 계산을 하려면 클래스 내부의 함수를 이용해야 한다.

 

      더하기 : add()
      빼   기 : subtract()
      곱하기 : multiply()
      나누기 : divide()

 

 


 

 문제 풀이

 

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

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

        System.out.println(first.add(second));
        System.out.println(first.subtract(second));
        System.out.print(first.multiply(second));

    }
}

Scanner로 값을 입력을 받고 BigInteger의 함수를 이용하여 계산을 했다.

 


 결과

 

 


 마무리

 

입력 조건을 확인하고 거기에 맞는 타입 조건을 사용하여 문제에 접근하자.

 

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함