[백준] 11047번 동전

개발자 P군·2024년 5월 26일

백준

목록 보기
3/57
post-thumbnail

📖 문제

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

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

✍ 입력

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

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

📄 출력

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

✅ 코드

import java.io.IOException;
import java.util.Scanner;

public class Main {

    /* 동전 0 */
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int K = sc.nextInt();
        int[] coin = new int[N];

        for(int i = 0; i < N; i++) {
            coin[i] = sc.nextInt();
        }

        int result = 0;
        for(int i = coin.length-1; i>=0; i--) {
            if (K >= 0) {
                result +=  K / coin[i];
                K = K % coin[i];
            } else {
                break;
            }
        }
        System.out.println(result);
    }

}

🧩 코드풀이

동전이 오름차순으로 주어지기 때문에 동전 개수의 최솟값을 출력하기 위해서는 동전을 담은 배열의 역순으로 차례대로 K를 나눈 값을 더해주면 해결된다!

profile
문제를 발견하고 해결하는 과정을 통해 얻은 새로운 지식을 공유하고자 합니다.

0개의 댓글