Coding Test/백준
[백준(Python)] 2579번 : 계단 오르기
6eom9eun
2023. 11. 29. 23:35
문제
https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
코드
import sys
input = sys.stdin.readline
n=int(input()) # 계단 개수
s=[int(input()) for _ in range(n)] # 계단 점수 리스트
dp=[0]*n
if len(s)<=2: # 계단 두 개 이하일 때,
print(sum(s)) # 그냥 모두 더함.
else:
dp[0] = s[0]
dp[1] = s[0]+s[1]
for i in range(2,n):
dp[i]=max(dp[i-3]+s[i-1]+s[i], dp[i-2]+s[i])
print(dp[-1])
해설
dp[i]=max(dp[i-3]+s[i-1]+s[i], dp[i-2]+s[i])
- dp[i - 3] + s[i - 1] + s[i]
- i-3번째 계단에서 2칸을 뛰어서 i번째 계단에 도착
- dp[i - 2] + s[i]
- i-2번째 계단에서 1칸을 뛰어서 i번째 계단 도착