요약
DP bottom-up 방식으로 문제를 풀면 됩니다. 기존 존재하는 값과의 비교를 통해 최솟값을 갱신하는 구조, 문제 풀이에는 크게 문제가 없었지만 index out of range 에러를 방지하기 위한 N 과 i+3, i+5 과의 비교 식을 잘못 작성하였었습니다.
솔루션
def getMinCount(N):
dp = [-1 for _ in range(N+1)]
if N >= 3:
dp[3] = 1
if N >= 5:
dp[5] = 1
for i, v in enumerate(dp):
if v == -1:
continue
if N >= i+3:
if dp[i+3] == -1 or v+1 < dp[i+3]:
dp[i+3] = v+1
if N >= i+5:
if dp[i+5] == -1 or v+1 < dp[i+5]:
dp[i+5] = v+1
return dp[N]
N = int(input())
answer = getMinCount(N)
print(answer)
'컴퓨터공학 & 정보통신 > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 11052 카드 구매하기 c++ 문제 풀이 (0) | 2023.08.26 |
---|---|
[백준] 1463 1로 만들기 (0) | 2023.07.07 |
[프로그래머스] 게임 맵 최단거리 (0) | 2023.04.16 |
[프로그래머스] 달리기 경주 (0) | 2023.04.15 |
[LeetCode] 71. Simplify Path (0) | 2023.04.12 |