728x90
코드 링크
https://www.acmicpc.net/problem/2294
TIL
- 문제에서 요구하는 것이 사용한 동전의 최수 개수이므로 dp도 그걸 기준으로 저장해야됨!!!
- dp는 tabulation이 더 편하고 생각보다 느리지 않아서 그냥 써도 될 듯 ,,,
- 항상 edge case랑 변수 범위 생각 하기 !!!!!!!
- 제발 기억해 (dp 최소값 구하는 방법 중 하나)
- dp[i] = min(dp[i], dp[i-coin]+1)
[ 처음에 인덱스 에러난 코드 ]
n, k = map(int, input().split())
dp = [100001]*(k+1)
coins = [int(input()) for _ in range(n)]
for c in coins:
dp[c] = 1
for coin in coins:
for i in range(coin, k+1):
dp[i] = min(dp[i], dp[i-coin]+1)
print(dp[k] if dp[k]<10001 else -1)
- k가 주어진 동전보다 작을 수도 있음
- 따라서 Outbound 오류 발생
Code
n, k = map(int, input().split())
dp = [100001]*(k+1)
coins = [int(input()) for _ in range(n)]
for c in coins:
if c <= k:
dp[c] = 1
for coin in coins:
if coin <=k:
for i in range(coin, k+1):
dp[i] = min(dp[i], dp[i-coin]+1)
print(dp[k] if dp[k]<10001 else -1)
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2293번: 동전 1 (DP) (1) | 2025.04.17 |
---|---|
[BOJ] 12919번: A와 B 2 (0) | 2025.04.16 |
[BOJ] 1931번: 회의실 배정 (Greedy) (0) | 2025.04.15 |
[BOJ] 1541번: 잃어버린 괄호 (Greedy) (0) | 2025.04.15 |
[BOJ] 1916번: 최소비용 구하기 (Dijkstra) (0) | 2025.04.06 |