[Gold V] Title: 동전 2, Time: 232 ms, Memory: 33432 KB -BaekjoonHub
This commit is contained in:
28
백준/Gold/2294. 동전 2/README.md
Normal file
28
백준/Gold/2294. 동전 2/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# [Gold V] 동전 2 - 2294
|
||||
|
||||
[문제 링크](https://www.acmicpc.net/problem/2294)
|
||||
|
||||
### 성능 요약
|
||||
|
||||
메모리: 33432 KB, 시간: 232 ms
|
||||
|
||||
### 분류
|
||||
|
||||
다이나믹 프로그래밍
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2026년 1월 7일 21:21:28
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>n가지 종류의 동전이 있다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그러면서 동전의 개수가 최소가 되도록 하려고 한다. 각각의 동전은 몇 개라도 사용할 수 있다.</p>
|
||||
|
||||
### 입력
|
||||
|
||||
<p>첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주어질 수도 있다.</p>
|
||||
|
||||
### 출력
|
||||
|
||||
<p>첫째 줄에 사용한 동전의 최소 개수를 출력한다. 불가능한 경우에는 -1을 출력한다.</p>
|
||||
|
||||
19
백준/Gold/2294. 동전 2/동전 2.py
Normal file
19
백준/Gold/2294. 동전 2/동전 2.py
Normal file
@@ -0,0 +1,19 @@
|
||||
import sys
|
||||
input = sys.stdin.readline
|
||||
|
||||
max_value = sys.maxsize
|
||||
|
||||
n, k = map(int, input().split())
|
||||
value = []
|
||||
for _ in range(n):
|
||||
value.append(int(input()))
|
||||
|
||||
dp = [max_value] * (k + 1)
|
||||
dp[0] = 0
|
||||
|
||||
value = sorted(set(value))
|
||||
for v in value:
|
||||
for i in range(v, k + 1):
|
||||
if dp[i - v] + 1 < dp[i]:
|
||||
dp[i] = dp[i - v] + 1
|
||||
print(dp[k] if dp[k] != max_value else -1)
|
||||
Reference in New Issue
Block a user