우노
[DP] 백준 2293번 “동전 1” Python 풀이 본문
문제 링크
풀이
우선, 동전 1원으로 10을 만들 수 있는 경우의 수와
동전 1, 2원으로 10을 만들 수 있는 경우의 수를 구함으로써 규칙을 찾을 수 있습니다.
즉, 새로 갱신되는 dp[n]의 값은 이전의 dp[n]의 값에 dp[n - 현재 사용한 동전의 종류 크기] 가 됩니다.
해당 규칙을 통해 1, 2, 5원으로 10을 만들 수 있는 경우의 수를 계산할 수 있습니다.
추가적으로, dp[0]은 주어진 동전을 통해 0원을 만들 수 있는 경우의 수인데,
아무 동전을 사용하지 않았을 때 0을 만들 수 있으므로, 경우의 수는 1입니다.
코드
import sys
n, k = map(int, sys.stdin.readline().split())
coins = []
for _ in range(n):
coins.append(int(sys.stdin.readline()))
dp = [0] * (k+1)
dp[0] = 1
for coin in coins:
for j in range(coin, k+1):
dp[j] = dp[j] + dp[j-coin]
print(dp[k])
참고
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[DP] 백준 12865번 “평범한 배낭” Python 풀이 (0) | 2024.03.15 |
---|---|
[DP] 백준 2011번 “암호코드” Python 풀이 (1) | 2023.12.03 |
[DP] 프로그래머스 “등굣길” Python 풀이 (0) | 2022.11.28 |
[DP] 백준 2240번 “자두나무” Python 풀이 (0) | 2022.11.21 |
[DP] 백준 10844번 “쉬운 계단 수” Python 풀이 (0) | 2022.11.20 |
Comments