해당 문제는 가치의 합이 k가 되는 조합
즉, 부분 문제는 가치의 합이 i가 되는 조합(1=<i<=k)
찾기 > 특정 동전을 썼을 때 가치의 합이 i가 되는 것 찾기
메모리는 4mb밖에 안되므로 배열 하나로 해야 한다.
출처
n, k = map(int, input().split())
c = []
dp = [0 for i in range(k + 1)]
dp[0] = 1
for i in range(n):
c.append(int(input()))
for i in c:
for j in range(1, k + 1):
if j - i >= 0:
dp[j] += dp[j - i]
print(dp[k])
if j-i>=0 : do[j]+=dp[j-i]