백준 2839번 문제 파이썬 설탕 배달 풀이 입니다.
파이썬 설탕 배달 문제 풀이
문제
출처: https://www.acmicpc.net/problem/2839
문제 풀이 (정답 코드)
n = int(input())
INF = 10e7
dp = [INF] * (5001)
dp[3] = 1
dp[5] = 1
for i in range(1,n+1):
dp[i] = min(dp[i], dp[i-3] + 1)
dp[i] = min(dp[i], dp[i-5] + 1)
print(dp[n] if dp[n] != INF else -1)
평범한 DP 문제다. 실수했던 점은 처음 dp 테이블을 만들 때 0으로 초기화를 해서, min값을 저장할 때 자꾸 0이 나왔었다. INF값을 만들어서 INF값으로 초기화를 하니까 정상적으로 동작한다.
맺으며
DP 문제는 공통적으로 어떤 상황일 때 그 상황의 최선의 값을 다시 사용하고 (반복 계산을 피하고) 리스트에 저장해둔다. 문제를 많이 풀어보면서 한 번에 DP유형임을 알아볼 수 있는 눈을 키워야겠다.
'🌏프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[백준 1149] 파이썬 RGB 거리 문제 풀이 (0) | 2022.07.04 |
---|---|
[백준 1003] 파이썬 피보나치 함수 풀이 (0) | 2022.07.04 |
댓글