[BOJ][Python][실3][2579] 계단 오르기

문제 링크

문제링크

첫 번째 풀이

정답코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
from math import sqrt, ceil
from bisect import bisect_left, bisect_right
import copy

# sys.stdin = open("input.txt", "r")

n = int(input())
arr = list(map(int, sys.stdin.read().splitlines()))
dp = [[0] * n for _ in range(2)]
if n == 1:
    print(arr[0])
else:
    # dp[i][0] : i번째에 1칸으로 도착한 경우.
    # dp[i][1] : i번째 칸에 2칸으로 도착한 경우.
    dp[0][0] = arr[0]
    dp[1][0] = 0
    dp[0][1] = arr[0] + arr[1]
    dp[1][1] = arr[1]
    for i in range(2, n):
        dp[0][i] = dp[1][i - 1] + arr[i]
        dp[1][i] = max(dp[0][i - 2], dp[1][i - 2]) + arr[i]

    print(max(dp[0][n - 1], dp[1][n - 1]))

Success Notice: 수고하셨습니다. :+1:

Leave a comment