알고리즘 문제풀이/자바

[백준-그리디] 11047번: 동전0

Ella_K 2022. 11. 18. 00:24

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

풀이: 

k원을 만드는데 필요한 동전 개수의 최솟값을 구해야 하므로 큰 단위의 동전부터 N원을 만드는데 사용하면 된다.

코드:

import java.util.Scanner;

//https://www.acmicpc.net/problem/11047
public class p11047 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();

        int[] coins = new int[n];
        for(int i =n-1; i>=0; i--){
            coins[i] = sc.nextInt();
        }

        int result = 0;
        int residual = k;
        for (int coin : coins){
            if(coin <= k){
                result += residual/coin;
                residual %= coin;
            }
        }

        System.out.println(result);
    }
}