반응형
문제
https://www.acmicpc.net/problem/2294
풀이
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 |