반응형
n번째 계단을 밟았을 때 최댓값을 구하는 경우는
1. n-1번째 계단을 밟았을 경우
n-2번째 계단을 밟으면 안되기 때문에 n-3번째 계단까지의 최댓값에 n-1번째 계단값과 n번째 계단값을 더해준다.
2. n-2번째 계단을 밟았을 경우
n-2번째 계단까지의 최댓값에 n번째 계단값을 더해준다.
그리고 n이 1일 경우랑 2일 경우를 구분해주지 않으면 index error가 날 수 있다!
import sys
input = sys.stdin.readline
n = int(input())
ary = [int(input()) for i in range(n)]
count = [0]*301
if n == 1:
count[1]=ary[0]
elif n == 2:
count[2]=ary[0]+ary[1]
else:
count[1]=ary[0]
count[2]=ary[0]+ary[1]
count[3]=max(ary[0]+ary[2],ary[1]+ary[2])
for k in range(4,n+1):
count[k]=max(count[k-3]+ary[k-2]+ary[k-1],count[k-2]+ary[k-1])
print(count[n])
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
2573번 파이썬 (0) | 2022.03.28 |
---|---|
2468번 파이썬 (0) | 2022.03.27 |
2108번 파이썬 (0) | 2022.03.26 |
5014번 파이썬 (0) | 2022.03.21 |
1697번 파이썬 (0) | 2022.03.20 |