문제풀이/DP
[파이썬] [DP] 백준 2293 동전 1
승무_
2022. 4. 7. 10:50
문제
https://www.acmicpc.net/problem/2293
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
코드
import sys
input=sys.stdin.readline
n,k=map(int, input().split())
dp=[0]*(k+1)
c=[]
for _ in range(n):
c.append(int(input()))
dp[0]=1
for i in c:
for j in range(1,k+1):
if j-i>=0:
dp[j]+=dp[j-i]
print(dp[k])
생각 정리
dp[0] | dp[1] | dp[2] | dp[3] | dp[4] | dp[5] | dp[6] | |
i = 1 | 개수(1) | 1 개수(1) |
1 + 1 개수(1) |
1 + 1 + 1 개수(1) |
1 + 1 + 1 + 1 개수(1) |
1 + 1 + 1 + 1 + 1 개수(1) |
1 + 1 + 1 + 1 + 1 + 1 개수(1) |
i = 2 | 2 개수(1) |
1 + 2 개수(1) |
1 + 1 + 2 2 + 2 개수(2) |
1 + 1 + 1 + 2 1 + 2 + 2 개수(2) |
1 + 1 + 1 + 1 + 2 1 + 1 + 2 + 2 2 + 2 + 2 개수(3) |
||
i = 5 | 5 개수(1) |
5 + 1 개수(1) |