Skip to content

Commit a6257ba

Browse files
committed
[BOJ] 동전 2 / 골드 5 / 80분
https://www.acmicpc.net/problem/2294
1 parent 68ff53b commit a6257ba

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
3+
n, k = map(int, input().split())
4+
5+
coins = []
6+
dp = [[-1] * (k + 1) for _ in range(n + 1)]
7+
for _ in range(n):
8+
coins.append(int(input()))
9+
10+
for i in range(1, n + 1):
11+
for j in range(1, k + 1):
12+
13+
if i == 1:
14+
# 첫번째 열일때 나누어 떨어지면 몫을 나누어 떨어지지 않으면 -1을 저장한다.
15+
if j % coins[i-1] == 0:
16+
dp[i][j] = j // coins[i-1]
17+
else:
18+
19+
if j <= coins[i-1]:
20+
# 현재 동전의 가치와 딱 나누어 떨어지는 경우
21+
if coins[i-1] == j:
22+
dp[i][j] = 1
23+
else:
24+
dp[i][j] = dp[i-1][j]
25+
else:
26+
if dp[i][j - coins[i-1]] != -1 and dp[i - 1][j] != -1:
27+
dp[i][j] = min(dp[i][j - coins[i-1]] + 1, dp[i - 1][j])
28+
elif dp[i][j - coins[i-1]] == -1 and dp[i - 1][j] == -1:
29+
dp[i][j] = -1
30+
elif dp[i][j - coins[i-1]] == -1:
31+
dp[i][j] = dp[i - 1][j]
32+
else:
33+
dp[i][j] = dp[i][j - coins[i-1]] + 1
34+
35+
36+
37+
print(dp[n][k])

0 commit comments

Comments
 (0)