문제
코드
import sys
input = sys.stdin.readline
n = int(input())
lst = [int(input()) for _ in range(n)]
dp = [0]*n
if len(lst) <= 2:
print(sum(lst))
else:
dp[0] = lst[0]
dp[1] = lst[0] + lst[1]
for i in range(2, n):
# dp[i-3]+lst[i-1]과 dp[i-2]의 최댓값
# 즉 0, 2 -> 3으로 간 것과 0, 1 -> 3 간 것의 최댓값을 구함
dp[i] = max(dp[i-3]+lst[i-1]+lst[i], dp[i-2]+lst[i])
# 마지막 계단까지 최대 점수 출력
print(dp[-1])
'백준 문제 풀이 > DP' 카테고리의 다른 글
1074 Z (python) (0) | 2024.07.02 |
---|