반응형
9084번: 동전
우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는
www.acmicpc.net
<문제 풀이>
- 각각의 동전들이 1 ~ m원까지 만들 수 있는 곳의 경우의 수를 구한다.
- i-coin을 만드는 값이 존재하는 경우
- dp[i] = dp[i] + dp[i-coin]
- 존재하지 않는 경우는 그대로 유지
<Code>
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
n = int(input()) # 동전의 가지수
coins = list(map(int, input().split())) # 동전
m = int(input()) # 금액
dp = [1] + [0] * m # dp
for coin in coins:
for i in range(m+1):
if i >= coin: # 현재 경우의 수(dp[i])에 이전 경우의 수(dp[i-coin])를 더한다.
dp[i] += dp[i-coin]
print(dp[m])
※ 잘못된 점, 개선점 등이 있다면 언제든 댓글로 알려주시면 감사하겠습니다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif)
반응형
'Alogorithm > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 23290 마법사 상어와 복제 - Python (0) | 2023.03.30 |
---|---|
[BAEJOON] 21611 마법사 상어와 블리자드 - Python (0) | 2023.03.29 |
[BAEKJOON] 21610 마법사 상어와 비바라기 - Python (0) | 2023.03.28 |
[BAEKJOON] 20056 마법사 상어와 파이어볼 (0) | 2023.03.27 |
[BAEKJOON] 21608 상어 초등학교 - Python (2) | 2023.03.24 |