1271. 엄청난 부자2
갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다. 그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다. 프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다. 한 생명체에게 얼마씩 돈을 줄 수 있는가? 또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?
http://www.acmicpc.net
문제 설명
더보기
엄청난 부자2
문제
갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.
그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.
프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.
한 생명체에게 얼마씩 돈을 줄 수 있는가?
또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?
입력
첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)
출력
첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.
예제 입력 1
1000 100
예제 출력 1
10
0
문제 해설
Java 코드
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
// 입력 조건에 m과 n의 최댓값이 10의 1,000 제곱
// int로는 부족함
// int와 BigInteger의 차이점
// int의 범위는 '-2,147,483,648~2,147,483,647'이지만
// BigInteger의 범위는 문자열 형태로 이루어져 있어 무한임
BigInteger n = sc.nextBigInteger();
BigInteger m = sc.nextBigInteger();
sc.close();
// BigInteger 계산법
// 문자열 형태로 이루어져 있기에 사칙연산이 안됨
// 따라서 BigInteger의 값을 계산을 하려면 클래스 내부의 함수를 이용해야 함
System.out.println(n.divide(m)); // 나누기
System.out.println(n.remainder(m)); // 나머지
}
}
Java 코드 해설
- Scanner를 사용해 입력을 받고, 문제의 입력 범위가 10의 1000승까지이기 때문에 Long으로도 불가능함.
- 그래서 입력을 받은 값을 "문자열" 형태로 바꾸기 위해서 BigInteger라는 클래스를 사용함.
- 아무튼 BigInteger의 형태로 입력을 받은 다음 n과 m에 할당함.
- 첫 째줄에 n과 m의 값을 나눈 값을, 둘 째줄에 n을 m로 나눈 나머지 값을 출력함.
'알고리즘 문제 풀이 > Java' 카테고리의 다른 글
[Java] Bronze V - 2438. 별 찍기 - 1 (Baekjoon) (0) | 2024.06.30 |
---|---|
[Java] Bronze V - 2420. 사파리월드 (Baekjoon) (0) | 2024.06.30 |
[Java] Bronze V - 1330. 두 수 비교하기 (Baekjoon) (0) | 2024.06.28 |
[Java] Bronze V - 1001. A-B (Baekjoon) (0) | 2024.06.25 |
[Java] Bronze V - 1000. A+B (Baekjoon) (0) | 2024.06.25 |