카테고리 없음

백준 파이썬 2579 계단 오르기

우히힝 2021. 12. 4. 06:12

https://www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net

대표적인 DP문제

 

너무 어렵게 생각하지말고

내가 지금 서있는 계단[i] + 계단[i-1] + 지금까지 올라왔던 dp계단[i-3] or 지금 내가 서있는 계단[i] + dp계단[i-2] 중 큰 수를 정하고 계단의 맨 위를 계산하면 됨.

 

n=int(input())
li=[0]
for i in range(n):
    li.append(int(input()))

if n == 1:
    print(li[1])
else:
    dp = [0] * (n+1)
    dp[1] = li[1]
    dp[2] = li[1] + li[2]

    for i in range(3,n+1):
        dp[i] = max(dp[i-3]+li[i-1]+li[i],dp[i-2]+li[i])
    print(dp[n])