티스토리 뷰

728x90

문제

www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

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

www.acmicpc.net

 

풀이 및 소스코드

편의상 1번째 계단에 대한 점수는 stiars[1]에 있는 것처럼 설명했지만,

코드 짤때는 stairs, dp 모두 0~n-1 인덱스로 초기화했다!

import sys

input = sys.stdin.readline

n = int(input())
stairs = []
dp = []
for i in range(n):
    stairs.append(int(input()))

if n==1:
    print(stairs[0])
    exit()
elif n == 2:
    print(max(stairs[0]+stairs[1], stairs[1]))
    exit()

dp.append(stairs[0])
dp.append(max(dp[0]+stairs[1], stairs[1]))
dp.append(max(dp[0]+stairs[2], stairs[1]+stairs[2]))

for i in range(3, n):
    dp.append(max(dp[i-2]+stairs[i], dp[i-3]+stairs[i-1]+stairs[i]))

print(dp[-1])

 

 

반응형