[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: 수고하셨습니다.
Leave a comment