2022년 05월 21일 토요일 - 너무 오랜만에 쓰네요 하하


오늘 올려볼 문제는 322번 Coin Change 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

오늘은 기본 dp인데도 좀 힘드네... 머리가 굳은듯


입력


사진에서도 볼 수 있듯이 int 배열 1개과 int 값 1개가 입력으로 들어온다.



풀이 및 코드


주어진 동전들을 가장 적게 써서 amount를 만들 수 있는지 판단하고 만들 수 있다면 개수를 리턴하는 문제다.


오늘은 처음부터 정답을 생각해냈다.

dp를 사용해서 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int coinChange(int[] coins, int amount) {
        int[] dp = new int[amount + 5];
        Arrays.fill(dp, 100000);
        dp[0] = 0;

        for(int i = 0; i <= amount; i++)
        {
            if(dp[i] != 100000)
            {
                for(int coin : coins)
                {
                    if(coin > amount - i) continue;

                    dp[i + coin] = Math.min(dp[i] + 1, dp[i + coin]);
                }
            }
        }

        return dp[amount] == 100000 ? -1 : dp[amount];
    }
}




제출 화면

leetcode 문제 맞았습니다


요즘 머리가 굳었는지 이런 기본 dp문제도 좀 힘들게 푸는 것 같다..

내일은 좀 어려운 문제가 나와서 내 뇌를 좀 풀어주면 좋겠다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts