[BOJ] 11047. 동전

김휴지 ㅣ 2023. 5. 18. 12:50

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


접근 방법

그리디에 대한 기초 배낭 문제이다.

그리디는 현재 시점에서 최적의 해를 찾는 방법이며, 가장 최적의 해를 찾지 못할 수도 있다.

아직까지는 내가 무턱대고 작성한 코드를 그리디라고 이해하고 있다.

거스름돈을 주는 것처럼 가장 큰 금액부터 나누어 몫과 나머지를 구하는 것을 반복했다.

 

소스 코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int N = Integer.valueOf(st.nextToken());
        int K = Integer.valueOf(st.nextToken());
        
        int min = 0;
        int[] coins = new int[N];
        for(int i=0; i<N; i++)
            coins[i] = Integer.valueOf(br.readLine());
        
        for (int i=N-1; i>=0; i--) {
            min += (K/coins[i]);
            K %= coins[i];
        }
        
        System.out.println(min);
    }
}

'코테 > 자바' 카테고리의 다른 글

[BOJ] 1920. 수 찾기  (0) 2023.05.18
[BOJ] 2164. 카드2  (0) 2023.05.18
[BOJ] 11053. 가장 긴 증가하는 부분 수열  (0) 2023.05.18
[BOJ] 18870. 좌표 압축  (0) 2023.05.18
[BOJ] 7568. 덩치  (2) 2023.05.18