반응형
문제
https://www.acmicpc.net/problem/2294
2294번: 동전 2
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주어
www.acmicpc.net
풀이

DP문제이다.
i번째 coins를 쓰는 경우, 안쓰는 경우를 비교한다.
i번째 coins을 쓰면 dp[j-coins[i]] + 1이 점화식이다. 5원을 써서 11원 만드는 방법을 고안한다 하면, dp[11]과 dp[11-5] + 1을 비교한다.
어렵다.......................... dp어케하냐
코드
n,k = map(int,input().split())
coins = []
for i in range(n):
coins.append(int(input()))
coins = sorted(coins)
dp = [10001] * (k+1)
dp[0]=0
for i in range(n):
for j in range(coins[i],k+1):
dp[j] = min(dp[j-coins[i]]+1, dp[j])
if dp[-1]==10001:
print(-1)
else:
print(dp[-1])반응형
'알고리즘' 카테고리의 다른 글
| [백준/1058][Python] 친구 (0) | 2024.02.01 |
|---|---|
| [백준/1987][Python] 알파벳 (1) | 2023.10.28 |
| [프로그래머스/181188][C++] 요격 시스템 (0) | 2023.10.21 |
| [백준/17298][C++] 오큰수 (1) | 2023.10.21 |
| [백준/2812][C++] 크게 만들기 (0) | 2023.10.21 |