주어진 동전들로 k원 금액을 만들어라!
틀린 이유
1. for 문 구현에서 index랑 범위 설정이 이해가 잘 안 갔었다. << 결정적
(보충)
2. n과 k를 헷갈려해서 d[k] = k원에 해당하는 동전개수 가 아니라 d[n]을 출력함
n, k = map(int, input().split())
coins = list(int(input()) for _ in range(n))
d = [10001] * (k+1)
d[0] = 0
for c in coins:
for i in range(c, k+1):
d[i] = min(d[i-c] + 1, d[i])
if d[k] == 10001:
print(-1)
else:
print(d[k])
인덱스가 너무나 이해가 안갔었다.
DP 초보인 나를 너무나 괴롭게 했던 문제,
종일 낑낑 거리다가 다른 문제(카드 구매하기) 풀고 다시 푸니까 이제 좀 알겠다. 혼자 힘으로 다시 풀 수 있어야 되겠다. 특히 왜 이중 for문이 쓰이고, 인덱스 관계랑, for문의 범위지정 에 관한 부분이 제일 까다로웠다.
'⚡️algorithm' 카테고리의 다른 글
[DP] 백준 12865. 평범한 배낭 (0) | 2022.04.21 |
---|---|
[DP] 백준 11051. 이항계수2 (feat. 파스칼의 삼각형) (0) | 2022.04.20 |
[DP] 백준 11052. 카드 구매하기 (0) | 2022.04.19 |
[DP] 백준 1699. 제곱수의 합 (0) | 2022.04.19 |
[DP] 백준 1904. 01타일 (0) | 2022.04.18 |