https://www.acmicpc.net/problem/2294
2294번: 동전 2
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주
www.acmicpc.net
<풀이>
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
coin = [int(input()) for _ in range(n)]
INF = int(1e9)
dp = [INF for _ in range(k+1)]
dp[0] = 0
for c in coin:
for i in range(c, k+1):
dp[i] = min(dp[i], dp[i-c]+1)
if dp[k] == INF:
print(-1)
else:
print(dp[k])
dp문제
해당 금액에 도달할 수 있는 최소값을 저장해두고 더 적은 개수로 도달할 수 있으면 패치해준다.
coin을 리스트에 저장해두고 min( dp[i], dp[i-c]+1) 로 비교해서 dp[i]를 패치해준다.
'파이썬' 카테고리의 다른 글
[백준 파이썬] 4963번 섬의 개수 (0) | 2022.08.08 |
---|---|
[백준 파이썬] 2225번 합분해 (0) | 2022.08.06 |
[백준 파이썬] 9205번 맥주 마시면서 걸어가기 (0) | 2022.08.04 |
[백준 파이썬] 2504번 괄호의 값 (1) | 2022.08.03 |
[프로그래머스 파이썬] 문자열 압축 (0) | 2022.08.02 |