https://www.acmicpc.net/problem/2579
n = int(input())
stair = [0] # 1-based indexing
for _ in range(n):
stair.append(int(input()))
if n == 1:
print(stair[1])
elif n == 2:
print(stair[1] + stair[2])
else:
dp = [0] * (n + 1)
dp[1] = stair[1]
dp[2] = stair[1] + stair[2]
for i in range(3, n + 1):
dp[i] = max(
dp[i - 2] + stair[i], # 2칸 오르기
dp[i - 3] + stair[i - 1] + stair[i] # 1칸 + 1칸 오르기
)
print(dp[n])

'coding test > Baekjoon' 카테고리의 다른 글
| [Python] 1149번 RGB거리 (0) | 2025.05.18 |
|---|---|
| [Python] 9095번 1, 2, 3 더하기 (0) | 2025.05.18 |
| [Python] 13913번 숨바꼭질 4 (0) | 2025.05.08 |
| [Python] 1991번 트리 순회 (0) | 2025.05.08 |
| [Python] 24444번 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2025.04.23 |