https://www.acmicpc.net/problem/2294
2294번: 동전 2
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주
www.acmicpc.net
1. 반복문을 통해 사용 가능한 동전들을 꺼냅니다.
2. 사용 가능한 동전부터 원하는 숫자(k)까지 반복문을 통해, 해당 숫자를 맞추기 위해 동전을 사용하는 가장 적은 횟수를 확인합니다.
import sys
input = sys.stdin.readline
n,k = map(int,input().split())
coins = [int(input()) for _ in range(n)]
coins.sort()
dp = [10001] * (k+1)
dp[0] = 0
# 사용 가능한 코인들만 확인
for coin in coins:
# coin 부터 구하려는 숫자까지 확인
for i in range(coin,k+1):
dp[i] = min(dp[i], dp[i-coin]+1)
if dp[k]== 10001: print(-1)
else: print(dp[k])
'알고리즘 공부' 카테고리의 다른 글
[백준/재귀] 1662번: 압축 (0) | 2022.08.27 |
---|---|
[백준/그리디] 2212번 센서 (0) | 2022.08.21 |
[백준/정렬, 투 포인터] 2473번 세 용액 (0) | 2022.08.07 |
[백준/비트마스크] 14939번 불 끄기 (0) | 2022.04.15 |
[백준/DP] 2266번 금고 테스트 (0) | 2022.04.13 |