PS/inflearn java coding
동전교환 (냅색)
easy16
2022. 4. 14. 23:13
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
class Main {
static int m, n, answer;
static int []dy;
public static void main(String args[]) throws Exception {
Main M = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
int []coin = new int[n];
for ( int i = 0 ; i<n ; i++) {
coin[i] = in.nextInt();
}
m = in.nextInt();
//dy[i]정의 : i 금액을 만드는데 드는 최소 동전개수
//dy[i]는 Integer.MAX로 초기화
// dy[j] = dy[j - coin[i]] +1
dy = new int[m+1];
Arrays.fill(dy, Integer.MAX_VALUE);
dy[0] = 0;
for ( int i = 0; i < n; i++) {
for ( int j = coin[i]; j<=m ; j++) {
dy[j] = Math.min(dy[j], dy[j - coin[i]]+1);
}
}
System.out.println(dy[m]);
}
}
ex)
input
3
1 2 5
15
output
3