코린이의 소소한 공부노트

[백준 온라인 저지] 11047. 동전 0 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 11047. 동전 0

무지맘 2023. 6. 28. 21:14

준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.

동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.

 

1. 입력

- 첫째 줄에 NK가 주어진다. (1 N 10, 1 K 100,000,000)

- 둘째 줄부터 N개의 줄에 동전의 가치 A_i가 오름차순으로 주어진다. (1 A_i 1,000,000, A_1 = 1, i 2인 경우에 A_iA_i-1의 배수)

 

2. 출력

- 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.

 

3. 예제

 

4. 코드

import java.util.*;
import java.io.*;
class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer token = new StringTokenizer(br.readLine());
        int n = Integer.valueOf(token.nextToken()), k = Integer.valueOf(token.nextToken());
        int[] changes = new int[n];
        for(int i=0 ; i<n ; i++)
            changes[i] = Integer.valueOf(br.readLine());
        int count = 0;
        for(int i=n-1 ; i>=0 ; i--){
            count += k/changes[i];
            k %= changes[i];
        }
        System.out.print(count);
    }
}

- 14252KB, 128ms