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()