[백준] 파이선 설탕 배달

Dev.Jo·2022년 1월 13일
0

알고리즘

목록 보기
4/21

코드

import math
N=int(input())
INFINITE = math.inf
dp= [INFINITE for i in range(5001)]
def sol(x):
    dp[3]=1
    dp[5]=1
    for i in range(6,x+1):
        dp[i] = min(dp[i-3],dp[i-5])+1

    if dp[x] == INFINITE:
        return -1
    return dp[x]
print(sol(N))

풀이

dp bottom-up

  • dp의 값들을 최초의 값들은 무한대로 설정한다. 왜냐하면 다음 코드에서 min으로 값을 비교해주기 위해서
  • dp의 기준 값인 dp[3] dp[5]일 때의 값을 1로 초기화 해준다
  • dp값을 return을 할 때 정확하게 N킬로그램을 만들 수 없다면 INFINITE인지를 체크해서 -1을 반환하도록 했다
profile
소프트웨어 엔지니어, 프론트엔드 개발자

0개의 댓글