https://leetcode.com/problems/coin-change/description/
함수 coinChange(동전 배열 coins, 총액 amount):
dp 배열을 크기 (amount + 1)로 생성 후 모두 Integer.MAX_VALUE로 초기화
dp[0] = 0 # 총액이 0일 경우 필요한 동전 개수는 0
for i = 1 to amount:
for coin in coins:
if coin <= i:
if dp[i - coin] != Integer.MAX_VALUE:
dp[i] = min(dp[i], dp[i - coin] + 1)
if dp[amount] == Integer.MAX_VALUE:
return -1 # 총액을 만들 수 없는 경우
return dp[amount] # 최소 동전 개수 반환
import java.util.Arrays;
class Solution {
public int coinChange(int[] coins, int amount) {
int[] dp = new int[amount + 1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[0] = 0;
for (int i = 1; i <= amount; i++) {
for (int coin : coins) {
if (coin > i) {
continue;
}
if (dp[i - coin] != Integer.MAX_VALUE) {
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
}
}
}
if (dp[amount] == Integer.MAX_VALUE) {
return -1;
}
return dp[amount];
}
}