CODING TEST/baekjoon
#1271 - 엄청난 부자2
iamyuunzo
2025. 7. 7. 21:22
📌 문제 정보
- 문제 이름 : #1271번 - 엄청난 부자2
- 문제 링크: https://www.acmicpc.net/problem/1271
📌 문제 요약
- 핵심 조건: 첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력
- 시간복잡도 제한: 없음
📌 내 풀이 및 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n, m;
n = sc.nextInt();
m = sc.nextInt();
System.out.println(n/m);
System.out.println(n%m);
}
}
<-- 내가 처음에 어떻게 풀었는지 -->
- 출력되는 값은 같았는데 Runtime 오류가 떴음.
- 입력 범위가 1 ≤ m ≤ n ≤ 10¹⁰⁰ → int나 long으로는 절대 못 담는다고 함.
📌 최종 정답 및 풀이
import java.util.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger n = sc.nextBigInteger();
BigInteger m = sc.nextBigInteger();
System.out.println(n.divide(m));
System.out.println(n.remainder(m));
}
}
<-- 풀이 요약 -->
- n과 m이 int(32비트), long(64비트)로는 담을 수 없는 초대형 정수
(작은 입력에서는 맞지만, 큰 입력이 오면 NumberFormatException 또는 값 오버플로우 → 잘못된 연산 → 런타임 에러 남.)
- Java에서 10¹⁰⁰급 정수는 반드시 BigInteger로 처리해야 함. -> 무한 정밀 정수 처리
- 자료형 제한때문에 런타임 에러가 남.
<-- 다른 풀이 요약 -->
- .
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
- BigInteger : 큰 정수도 다 담을 수 있는 엄청 큰 정수 처리 전용 타입
- / (나누기) => divide()
- % => remainder()