
https://www.acmicpc.net/problem/2294
n, k = map(int, input().split())
coins = []
dp = [0 for _ in range(k+1)]
dp[0] =1
for _ in range(n):
coins.append(int(input()))
for i in range(n):
for j in range(coins[i], k+1):
if dp[j-coins[i]]:
dp[j] = dp[j] + dp[j-coins[i]]
print(dp[k])
10원을 내는 방법은
5원을 하나 내고, 남은 5원을 내는 방법과 (dp[5])
2원을 하나 내고, 남은 8원을 내는 방법과 (dp[8])
1원을 하나 내고, 남은 9원을 내는 방법으로 나눌 수 있다.
이를 저렇게 풀어낼 수 있다.
https://seongjuk.tistory.com/entry/BOJ-%EB%B0%B1%EC%A4%80-2293%EB%B2%88-%EB%8F%99%EC%A0%84-1
여기 이중 어레이로 접근하는 방법에 대해서도 잘 표현이 되어있는데, 괜찮은 방법이라 추가해ㅜㄴ다.