[문제풀이] 백준 #1271 엄청난 부자2 Java 풀이

kai6666·2022년 7월 10일
0

👉 문제

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

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

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

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

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

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

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


✨ 풀이

  • 틀린 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BaekJoon1271 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        StringTokenizer tk = new StringTokenizer(str, " ");
        int money = Integer.parseInt(tk.nextToken());
        int people = Integer.parseInt(tk.nextToken());

        System.out.println(money/people);
        System.out.println(money%people);
    }
    //test 1
    //100 5
    //20
    //0

    //test 2
    //99999 9
    //11111
    //0
}
  • 통과된 풀이
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigInteger a = sc.nextBigInteger();
        BigInteger b = sc.nextBigInteger();
        sc.close();
        System.out.println(a.divide(b));
        System.out.println(a.remainder(b));
    }
}

풀이 노트:

  • 모든 생명체에게 동등하게 돈을 나눠주는 상황이라니 문제를 참 재미있게 출제했다는 생각부터 들었다. (결국은 나누기와 몫 문제인데 여기다 스토리를 부여하다니...👽)
  • 나눠줄 수 있는 생명체의 수는 / 나눗셈, 나눠주고 남는 돈은 % 몫으로 구하는 접근으로 금방 풀었는데, 런타임 에러가 났다. 문제를 다시 읽어봐도 접근은 맞는 것 같아서, 인티저형을 아예 빅인티저로 늘렸더니 통과됐다.
  • BigInteger는 자바에서 기본 데이터 타입을 넘어서는 큰 수로 연산할 때 쓰이는 math 패키지의 클래스로, 기본으로 제공하는 메서드 종류가 많아서 활용도가 높다. 이 문제에서는 나누기 메서드인 divide()와 몫을 구하는 메서드인 remainder()를 썼다.
profile
성장 아카이브

0개의 댓글

관련 채용 정보