PS/BOJ
11047
easy16
2022. 5. 6. 19:21
동전 0 : https://www.acmicpc.net/problem/11047
참조 : https://st-lab.tistory.com/143
그리디 풀이 법이 참조 사이트에 있는데, 동전의 종류에 따라 예외가 있는 것으로 알고 있다.
참조에 따르면, 동전들이 배수관계에 있을 경우에만 그리디로 풀 수 있는 것으로 보인다.
만약 코인의 종류가 5, 3, 1이면 해당 그리디 방식은 오류가 발생할 것이다.
성능 제약에 문제가 없고, 코인의 종류에 따라 오답확률이 있는 수식을 쓸 바에야.
냅색을 통해 정확하게 값을 구하는 것이 낫지 않나 하는 생각이 든다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int N, K;
static int [] coin, price;
static boolean DBG = false;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
coin= new int [N];
price= new int [K+1];
for (int i = 0 ; i < N ; i ++) {
coin[i] = Integer.parseInt(br.readLine());
}
for ( int i = 0 ; i < N ; i++) {
for ( int j = coin[i] ; j <= K ; ++j) {
price[j] = price[ j - coin[i]] + 1;
}
}
System.out.println(price[K]);
}
}