[Java] 백준 1271번 엄청난 부자2
문제
갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.
그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.
프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.
한 생명체에게 얼마씩 돈을 줄 수 있는가?
또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?
입력
첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)
출력
첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger N = new BigInteger(sc.next());
BigInteger M = new BigInteger(sc.next());
System.out.println(N.divide(M));
System.out.println(N.mod(M));
}
}
Int 정수형으로 접근했었는데 범위 보고, long을 사용할까?하다가 long보다 훨씬 큰 범위여서 BigInteger을 사용했다.
- Java in BigInteger
Java의 BigInteger
BigInteger는 Java의 표준 라이브러리 중 java.math 패키지에 있는 클래스
기본 데이터 유형의 범위를 벗어나는 큰 정수와 관련된 수학적 연산에 사용된다
특징: 임의의 정밀도: int나 long과 같이 고정된 크기(각각 32비트와 64비트)를 가지는 것과 달리, BigInteger는 이론적으로 사용 가능한 메모리에만 제한되는 어떤 크기의 정수라도 다룰 수 있다.
불변성: BigInteger 객체는 생성된 후에는 그 값이 변경 불가
BigInteger에 대한 모든 연산은 새로운 BigInteger 객체를 생성
표준 연산자 미지원: BigInteger의 산술 연산은 Java의 표준 연산자 (+, -, *, /, % 등)을 사용하여 수행할 수 없다.
대신 .add(), .subtract(), .multiply(), .divide(), .mod()와 같은 메소드를 사용해야 함
주요 메소드:
BigInteger(String val): 문자열 표현에서 BigInteger를 생성
BigInteger(byte[] val): 바이트 배열에서 BigInteger를 생성