์๋ฐ ์ฝ๋
import java.util.*;
class Solution {
public int coinChange(int[] coins, int amount) {
long[] dp = new long[amount+1];
dp[0]=0;
for(int i=1;i<=amount;i++){
dp[i] = Integer.MAX_VALUE;
for(int coin : coins){
if(i-coin<0){
continue;
}
dp[i]= Math.min(dp[i],dp[i-coin]+1);
}
}
System.out.println(Arrays.toString(dp));
if(dp[amount]!=Integer.MAX_VALUE){
return (int)(dp[amount]);
}else{
return -1;
}
}
}
ํ์ด์ฌ ์ฝ๋
class Solution(object):
def coinChange(self, coins, amount):
dp =[0]
for i in range(1,amount+1):
dp.append(1e9)
for coin in coins:
if i-coin<0:
continue
dp[i]=min(dp[i-coin]+1,dp[i])
ans = dp[amount] if dp[amount] !=1e9 else -1
return ans
๊ฐ๊ณ ์๋ ๋์ ์ผ๋ก i-coin ๊ณ์ฐ์ ๋ค ํด๋ณธ๋ค.
dp[i-coin] ๊ฐ์ด 1e9๊ฐ ์๋๋ผ๋ฉด ๊ฐ๊ณ ์๋ ๋์ ์ผ๋ก ๊ฐ์ ๊ตฌํ ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก dp[i-coin]+1 ํ๊ฐ์ dp[i]์ ์ ๋ฐ์ดํธ ํ๋ค. (์ต์๊ฐ์ผ๋ก)
๋ง์ฝ, i-coin<0 ์ด๋ฉด ์ ๊ณผ์ ์ ๋ฌด์ํ๋ค.
์ ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณตํ๊ณ , dp[amount]๊ฐ 1e9๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ต ์ถ๋ ฅ