문제 링크
풀이
- 냅색 알고리즘과 비슷한 듯하다.
- dp[i] : i 금액을 만들 때 필요한 최소 동전 개수
- 동전마다 동전 금액만큼 빼고 해당 동전을 하나 추가했을 때와 비교
- 냅색 알고리즘 참고
[백준 12865번] 평범한 배낭 -python
문제 링크 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각..
zzion2.tistory.com
n, k = map(int,input().split())
coin = []
for _ in range(n):
num = int(input())
coin.append(num)
# dp[i] : i 숫자를 만들 때 필요한 최소 동전 개수
dp = [10001] * (k+1)
# 0원은 0개
dp[0] = 0
for i in range(n):
for j in range(coin[i], k+1):
# 동전 금액만큼 빼고 해당 동전을 하나 추가했을 때와 비교
dp[j] = min(dp[j], dp[j-coin[i]] + 1)
# 만들 수 있다면
if dp[k] != 10001:
print(dp[k])
else:
print(-1)'개발 > algorithm' 카테고리의 다른 글
| [백준 12015번] 가장 긴 증가하는 부분 수열2 - python (0) | 2022.05.12 |
|---|---|
| [프로그래머스][level3] 퍼즐 조각 채우기 - python (0) | 2022.05.12 |
| [백준 11562번] 백양로 브레이크 - python (0) | 2022.05.06 |
| [백준 1956번] 운동 - python (0) | 2022.05.06 |
| [백준 1520번] 내리막길 - python (0) | 2022.05.06 |