[백준][JAVA] 1271번: 엄청난 부자2

easyone·2025년 3월 7일
0

코딩 테스트

목록 보기
1/2

문제 유형 : 사칙연산

문제

갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.
그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.
프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.
한 생명체에게 얼마씩 돈을 줄 수 있는가?
또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?

문제에서 구해야 할 것

  • 가지고 있는 돈 n, 돈을 나눠줘야 하는 생명체 m이 주어짐
  • m개의 생명체에게 나눠준 돈과 나눠주고 남는 돈

알고리즘 설계

  • 1 ≤ m ≤ n ≤ 10^1000 이므로 BigInteger 사용

    int < long < BigInteger( 범위: 무한 )

    • 표현하고자 하는 자리수에 비례해서 메모리 크기가 늘어나며, Heap에 저장된다.
    • 문자열 형태로 숫자를 처리하므로, 사칙연산이 안된다. -> 계산하기 위해서는 클래스 내부 메서드를 사용해야 한다.
      덧셈 : b1.add(b2);
      뺄셈 : b1.subtract(b2);
      곱셈 : b1.multiply(b2);
      나눗셈 : b1.divide(b2);
      나머지 : b1.remainder(b2);
      비교 : b1.compareTo(b2);
  • n / m 출력
  • n % m 출력

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.math.BigInteger;

public class Main {
    public static void solution() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        BigInteger n = new BigInteger(str[0]);
        BigInteger m = new BigInteger(str[1]);
        System.out.println(n.divide(m));
        System.out.println(n.remainder(m));
    }
    public static void main(String[] args) throws IOException {
        solution();
    }
}

Github URL

Github 링크

profile
백엔드 개발자 지망 대학생

0개의 댓글