백준(2839) - 설탕 배달 Python

최대 1 분 소요

백준(2839) - 설탕 배달

문제풀이 : 그리디 알고리즘, 파이썬

해결방법

문제 유형은 그리디지만, 다이나믹 프로그래밍 방식으로 해결했다.

n의 최대값이 5000이므로 5000까지 최대값으로 초기화 시킨후

3과 5 인덱스에 봉지 1개를 의미하는 1을 넣고,

n + 1까지 min(d[i], d[i-3] + 1, d[i-5]+1)을 순차적으로 저장해서 해결했다.

INF = int(1e9)
n = int(input())

d = [INF] * 5001
d[3] = 1
d[5] = 1
for i in range(3, n+1):
    d[i] = min(d[i], d[i-3] + 1, d[i-5]+1)

if d[n] == INF:
    print(-1)
else:
    print(d[n])

댓글남기기