본문 바로가기
알고리즘/BOJ

[Python] 백준 2624번: 동전 바꿔주기

by PIAI 2021. 10. 15.

https://www.acmicpc.net/problem/2624

 

2624번: 동전 바꿔주기

명보네 동네 가게의 현금 출납기에는 k 가지 동전이 각각 n1, n2, … , nk개 씩 들어있다. 가게 주인은 명보에게 T원의 지폐를 동전으로 바꿔 주려고 한다. 이때, 동전 교환 방법은 여러 가지가 있을

www.acmicpc.net

동전의 갯수가 정해져있기 때문에 이전행에 동전의 갯수(cnt) * 금액(val) 만큼 dp를 더해주면된다

점화식은 dp[i][j] = dp[i][j] + dp[i-1][j-v*val] ( 1 <= v <= cnt)

T = int(input())
k = int(input())
coin = [[0, 0]]
dp = [[0 for _ in range(T+1)] for _ in range(k+1)]
for _ in range(k):
    x, y = map(int, input().split())
    coin.append([x, y])

dp[0][0] = 1
for i in range(1, k+1):
    val, cnt = coin[i]
    for j in range(T+1):
        dp[i][j] = dp[i-1][j]
        for v in range(1, cnt+1):
            if j-v*val >= 0:
                dp[i][j] += dp[i-1][j-v*val]
            else:
                break

print(dp[k][T])

댓글