Coding Test/Baekjoon

[Python] 파이썬 백준(2579) 계단 오르기

파송송 2023. 6. 30. 21:15
728x90

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

 

2579번: 계단 오르기

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

www.acmicpc.net


나의 풀이

  • 2칸씩 이어서 갈 수 있고, 3칸은 안됨
  • 1칸만 띄어서 갈 수 있고 2칸은 안됨
  • 마지막 계단을 무조건 밟아야 함

최대로 나오는 점수를 return 하면 되는 문제이다.


dp에는 각 step에서 선택할 수 있는 가장 큰 수가 저장된다.

import sys
input = sys.stdin.readline

n = int(input())
s=[int(input()) for _ in range(n)] 
print(s)

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])

728x90