Algorithm/Baekjoon

[Python] 2579. 계단오르기

느낌표 공장장 2021. 9. 23. 23:13
n = int(input()) # 계단의 수
stairs = [int(input()) for _ in range(n)] # 계단

if n == 1:
    print(stairs[0])

else:
    dp = [0 for _ in range(n)]

    dp[0] = stairs[0]   # 1번 계단
    dp[1] = stairs[0] + stairs[1] # 1번 + 2번 계단 밟음
    for i in range(2, n):
        # 1. 현재 계단 + 이전의 계단 + 전전전의 계단 밟은 경우
        # 2. 현재 계단 + 전전의 계단 밟은 경우
        # 두 경우 중 더 큰 값을 선택
        dp[i] = max(dp[i-3] + stairs[i-1] + stairs[i], dp[i-2] + stairs[i])

    print(dp[n-1])

점화식을 찾는 것이 포인트였던 문제

'Algorithm > Baekjoon' 카테고리의 다른 글

[Python] 1912. 연속합  (0) 2021.09.26
[Python] 11053. 가장 긴 증가하는 부분 수열  (0) 2021.09.26
[Python] 11659. 구간 합 구하기 4  (0) 2021.09.19
[Python] 1904. 01타일  (0) 2021.09.19
[Python] 9095. 1, 2, 3 더하기  (0) 2021.09.19