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번째 계단 도착