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 |