Algorithm/DP

[python] HackerRank - The Coin Change Problem

khakhalog 2023. 5. 20. 02:31

문제

https://www.hackerrank.com/challenges/coin-change/problem?isFullScreen=true 

 

The Coin Change Problem | HackerRank

Given a list of 'm' coin values, how many ways can you make change for 'n' units?

www.hackerrank.com


접근

dp를 이용한 풀이.

주어진 모든 동전의 경우를 하나씩 살피면서

1원부터 n원까지 만들 수 있는 경우의 수를 메모이제이션해가며 만들 수 있는 모든 경우를 구해준다.

 


코드

def getWays(n,c):
    dp = [0] * (n+1)
    dp[0] = 1
    c.sort()

    for coin in c:
        if n >= coin: # 만드려는 금액이 동전의 금액보다 작으면 만들 수 없기 때문에 볼 필요 없음.
            for i in range(1, n+1):
                if i-coin >= 0: # 1~n까지 중 동전의 금액을 뺐을 때 0보다 작으면 만들 수 없기 때문에 볼 필요 없음.
                    dp[i] = dp[i] + dp[i-coin]
    return dp[n]