Python/BAEKJOON
[백준] 9048번 동전(python)
Magin
2022. 3. 10. 00:14
728x90
문제)

알고리즘)
DP
- 기준 값은 목표 금액(d), 계산 순서는 오름차순 동전 값(coins)
ex)
c = 3 (현재 동전)
d[5] += d[5-3]
목표 금액 5 += 3원을 사용하기 전의 d[2]의 값
모든 계산을 마치고 목표금액의 마지막 값을 출력
코드)
#동전
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n = int(input())
coins = list(map(int, input().split()))
goal = int(input())
d = [0]*(goal+1) #goal(목표 금액)까지 DP
d[0] = 1
for c in coins: #오름차순 코인
for i in range(c, goal+1):
d[i] += d[i-c] # 현재 i 는 (i- 현재 동전금액) => 이전 목표금액 달성 방법 수
print(d[goal]) #목표 금액 달성방법
728x90