백준 문제 풀이/DP

2579 계단 오르기 (python)

한사공사 2024. 7. 10. 01:08

문제

 

코드

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