티스토리 뷰

문제

갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.

그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.

프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.

한 생명체에게 얼마씩 돈을 줄 수 있는가?

또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?

 

입력

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

출력

첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.

 

 

문제를 읽고 나서 코드를 적는데는 얼마 걸리지 않았는데

 

런타임 오류가 발생햇다.

왜지? 하는 마음에 1 ≤ m ≤ n ≤ 101000 부분을 다시 봤다.

Long도 넣었으나 런타임 에러..

 

방법을 찾던 중 BigInteger이라는 것을 찾게 됬다.

 

범위

int : -2,147,483,648 ~ 2,147,483,647

long :  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

BigInteger : 무한대

 

 

정답 코드

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

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

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

        System.out.println(a.divide(b));
        System.out.println(a.remainder(b));


    }
}

 

import java.math.BigInteger; 로 선언을 해주고

 

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

 

사용을 해주면 된다.

 


 

BigInteger 특이한 점:

 

1. BigInteger을 초기화하기 위해서는 문자열을 인자로 넘겨줘야된다.

 

BigInteger bigNumber1 = new BigInteger("100000");
BigInteger bigNumber2 = new BigInteger("10000");

2. 사칙연산이 안된다.

 

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

 

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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함