백준 문제 풀이 Python
[백준] 2293번 동전 1 - 파이썬[Python]
골슼
2022. 12. 12. 22:16
-문제
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
-풀이
dp 리스트를 (k+1) 크기만큼으로 선언한다.
동전의 값 coin와 만들고자 하는 금액인 i 사이에는 아래와 같은 관계식이 성립한다.
dp[i] += dp[i-coin]
단, i == coin일 경우에는 coin 하나로 i를 생성할 수 있기에 1을 더해준다.
-소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import sys
input = sys.stdin.readline
coins = []
n, k = map(int, input().split())
for _ in range(n):
coins.append(int(input()))
coins.sort()
dp = [0] * (k+1)
for coin in coins:
for i in range(coin, k+1):
if coin == i:
dp[i] += dp[i-coin] +1
else:
dp[i] += dp[i-coin]
print(dp[-1])
|
cs |