코딩테스트
[Python] 설탕 배달 - 백준 (DP)
#CJE
2023. 1. 14. 09:39
해당 글은 백준 2839번 문제 '설탕 배달'을 다룬다.
문제
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
설명
DP 문제로 거스름돈 최소갯수를 구하는 방법대로 구하였다.
dp[j] = min(dp[j], dp[j-3]+1, dp[j-5]+1) 식으로 구하면 된다. 출력할 때 dp[n] 값이 5001이상이라면 -1을 출력해준다.
코드
n = int(input())
dp = [5001]*5001
dp[0]=0
arr = [3, 5]
for i in arr:
for j in range(i, n+1):
dp[j] = min(dp[j], dp[j-i]+1)
if dp[n] >= 5001:
print(-1)
else:
print(dp[n])