0. 문제 링크
https://www.acmicpc.net/problem/2294
1. 풀이 방법
https://pacific-ocean.tistory.com/203
2. 코드
n, k = map(int, input().split())
c = [int(input()) for _ in range(n)]
dp = [0] * (k + 1)
for i in range(1, k + 1): # k + 1까지 찾아야 함
mins = float('inf') # 최소를 위해
for j in c:
if j <= i and dp[i - j] != -1: # 찾을 수 없거나, j가 i보다 크면 min 값을 갱신하지 않음
mins = min(mins, dp[i - j])
dp[i] = mins + 1 if mins != float('inf') else -1 # 만약 갱신이 안 되었다면, 찾을 수 없는 것이므로 -1
print(dp[k])
3. 마무리
'Computer Science > 알고리즘' 카테고리의 다른 글
[백준 - Python] 9252 - LCS 2 (0) | 2023.02.23 |
---|---|
[백준 - Python] 11058 - 크리보드 (2) | 2023.02.21 |
[백준 - Python] 12869 - 뮤탈리스크 (0) | 2023.02.21 |
[백준 - Python] 1495 - 기타리스트 (0) | 2023.02.21 |
[백준 - Python] 12865 - 평범한 배낭 (0) | 2023.02.21 |