public static int coinChange(int[] coins, int amount) {
int[] dy = new int[amount + 1];
// dy 배열을 초기화한다.
Arrays.fill(dy, amount + 1);
dy[0] = 0;
// 모든 동전에 대해 dy 배열을 계산한다.
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < coins.length; j++) {
if (coins[j] <= i) {
dy[i] = Math.min(dy[i], dy[i - coins[j]] + 1);
}
}
}
return dy[amount] > amount ? -1 : dy[amount];
}```