Coding Test

[백준] 동전 1

상상쓰 2021. 11. 18. 17:17

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

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

dp[k] = k원을 만들 수 있는 경우의 수

n번 돌 때마다 dp 배열은 갱신된다. (n번째는 n개의 수를 가지고 k원을 만들 수 있는 경우의 수) 

 

import sys

n, k = map(int, sys.stdin.readline().split())
dp = [0] * (k+1)
dp[0] = 1

for i in range(1, n+1):
    m = int(sys.stdin.readline())
    
    for j in range(k+1):
        if j - m >= 0:   
            dp[j] += dp[j-m]
        
print(dp[-1])