[boj] 2579 계단 오르기 python
2022. 2. 14. 17:34ㆍ공부한 것 정리
반응형
한칸씩 연속 3회는 올라올 수 없음
-> i번째 계단 직전에 밟을 수 있는 경우의 수
1,1,2
1,2
2
1,1
1
-> "결국 직전칸에서 올라온 것 vs 2칸 전에서 올라온 것" 으로 식 세울 수 있음
import sys
input = sys.stdin.readline
n = int(input().strip())
stairs = [int(input().strip()) for _ in range(n)]
dp = [0 for _ in range(n+1)]
if n>=3:
dp[0] = stairs[0]
dp[1] = stairs[0]+stairs[1]
dp[2] = max(stairs[0]+stairs[2],stairs[1]+stairs[2])
for i in range(3,n):
dp[i] = max( stairs[i-1]+dp[i-3]+stairs[i], dp[i-2],stairs[i] )
#max(직전칸의 값+3개 전 계단의 최댓값+현재값, 2개 전 계단의 최댓값 + 현재값)
print(dp[-2])
else:
if n==1: print(stairs[0])
elif n==2: print(stairs[0]+stairs[1])
elif n==3: print(max(stairs[0]+stairs[2],stairs[1]+stairs[2]))
반응형
'공부한 것 정리' 카테고리의 다른 글
[mySQL] 코테 대비 SQL 연습 사이트 (0) | 2022.02.10 |
---|