import java.util.Arrays;
import java.util.Scanner;
public class Main {
//냅색 알고리즘
static int n, m;
static int[] coins; //동전 종류 목록
static int[] dynamic; //최소 동전 개수
public int solution() {
dynamic[0] = 0;
for(int i=0; i<n; i++) {
for(int j=coins[i]; j<=m; j++) {
dynamic[j] = Math.min(dynamic[j], dynamic[j-coins[i]]+1);
}
}
return dynamic[m];
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
n = kb.nextInt();
coins = new int[n];
for(int i=0; i<n; i++) coins[i] = kb.nextInt();
m = kb.nextInt();
dynamic = new int[m+1];
Arrays.fill(dynamic, Integer.MAX_VALUE);
System.out.println(T.solution());
}
}
'Solved > 코딩테스트' 카테고리의 다른 글
최대점수 구하기 (냅색 알고리즘) (0) | 2023.04.05 |
---|---|
뮤직비디오(결정알고리즘) (0) | 2023.04.03 |
섬나라 아일랜드 (BFS, DFS) (0) | 2023.03.30 |
토마토(BFS 활용) (0) | 2023.03.29 |
후위연산식 문제 (Stack) (0) | 2023.03.18 |