티스토리 뷰

반응형

 

www.acmicpc.net/problem/1271

 

1271번: 엄청난 부자2

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수)

www.acmicpc.net

 

 


 

 

문제

입력

출력

예제 입출력

알고리즘 분류

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

 


 

문제 접근 과정

 

먼저 int로 접근했다. 하지만 오류가 발생하여 다시 문제를 천천히 봤다.

입력 조건에 m과 n의 최댓값이 10의 1,000 제곱이었다.

int의 메모리 범위는 '-2,147,483,648~2,147,483,647'이다.

 

10의 1,000 제곱이면 거의 무한에 가까운 엄청나게 큰 숫자이다.

참고로 10의 10 제곱만 해도 10,000,000,000이다.

 

그래서 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 n = in.nextBigInteger();
        BigInteger m = in.nextBigInteger();
        in.close();
        System.out.println(n.divide(m));
        System.out.println(n.remainder(m));

    }
}

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

 

 


결과

 

 


마무리

 

문제 조건을 잘 확인하고 그에 맞는 변수를 사용하자

 

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함