https://www.acmicpc.net/problem/2293
- 소스코드
# 2293 : 동전 1
n, k = map(int, input().split())
coins = [int(input()) for _ in range(n)]
# dp 테이블 초기화
dp = [0] * (k + 1)
dp[0] = 1
for coin in coins:
for i in range(k + 1):
# 만들려고 하는 돈이 가지고 있는 화페단위보다 크거나 같을 경우
if i >= coin:
# 이전 경우의 수에 현재 동전으로 만들 수 있는 경우의 수 더하기
dp[i] += dp[i - coin]
print(dp[k])
백준 9084번과 비슷한 문제였고, 실제로 동일한 코드로 풀린 문제이다. 그때도 구글링해서 풀었는데, 이번에도 처음에 풀다가 경우의 수를 잘못 구해서 다시 구글링했다. 그래도 비슷한 문제를 2번 푸니까 확실히 잘 이해된 것 같다.
Uploaded by Notion2Tistory v1.1.0