Coin Change

Updated:

말 그대로 동전문제이다.
주어진 동전의 종류에 맞춰서 최소 동전을 반환해주면 된다

by Java

class Solution {
    public int coinChange(int[] coins, int amount) {
        int[] dp = new int[amount+1];
        Arrays.fill(dp,-1);
        int ans = go(amount,dp,coins);
        if(ans==(int)1e9) return -1;
        else return ans;
    }
    private int go(int k,int[] dp,int[] coins) {
        if(k<0) return (int)1e9;
        if(k==0) return 0;
        if(dp[k]!=-1) return dp[k];
        dp[k] = (int)1e9;
        for(int i=coins.length-1;i>=0;i--) {
            if(k-coins[i]>=0) {
                dp[k] = Math.min(dp[k], go(k-coins[i],dp,coins)+1);
            }
        }
        return dp[k];
    }
}

Leave a comment