보글보글 개발일지
article thumbnail
Published 2023. 10. 26. 14:32
[백준/2294][Python] 동전2 알고리즘
반응형

문제

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
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!