https://www.acmicpc.net/problem/2839
문제 해결을 위한 과정
이 문제는 dp를 이용하면 쉽게 해결할 수 있었습니다. 우선 dp 테이블을 만들고 최댓값으로 초기화해줍니다. 이후 해당하는 인덱스가 설탕으로 만들 수 있는 무게인지를 확인합니다. 이를 점화식으로 작성하면 다음과 같습니다.
dp [i] = min(dp[i], dp[i-설탕] + 1)
이를 소스코드로 작성하면 다음과 같습니다.
소스코드
bags = [3, 5]
n = int(input())
INF = int(1e9)
dp = [INF] * 5001
dp[0] = 0
for i in range(len(bags)):
for j in range(5001):
if j - bags[i] >= 0:
dp[j] = min(dp[j], dp[j-bags[i]] + 1)
if dp[n] != INF:
print(dp[n])
else:
print(-1)
'알고리즘 > 백준' 카테고리의 다른 글
백준 알고리즘 2294: 동전 2 (Python) (0) | 2024.04.22 |
---|---|
백준 알고리즘 1931: 회의실 배정 (Python) (0) | 2024.04.20 |
백준 알고리즘 1890: 점프(Python) (2) | 2024.04.19 |
백준 알고리즘 12865: 평범한 배낭(Python) (0) | 2024.04.17 |
백준 알고리즘 11048: 이동하기(Python) (0) | 2024.04.16 |