차곡차곡

[BOJ/Python] 백준 2579번 - 계단 오르기 본문

CS/Algorithm

[BOJ/Python] 백준 2579번 - 계단 오르기

sohy 2022. 8. 18. 04:35

백준 #2579 계단 오르기

 

2579번: 계단 오르기

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

www.acmicpc.net

import sys
input = sys.stdin.readline

n = int(input())   # 계단 개수
stair = list(int(input()) for _ in range(n))

point = [0 for _ in range(n)]   # 점수 저장
cnt = 0   # 연속해서 계단 오르는 횟수

for i in range(n):
  if i == 0:
    point[i] = stair[i]
  elif i == 1:
    point[i] = point[i-1] + stair[i]
  else:
    point[i] = max(stair[i-1] + point[i-3], point[i-2]) + stair[i]    # 바로 이전 계단에서 올라온 경우, 두 계단 전에서 올라온 경우

print(point[-1])

point 리스트에는 각 계단까지 오르면서 얻을 수 있는 최대 점수가 저장된다. 각 계단 위치에서는 한 계단 전 혹은 두 계단 전에서 올 수 있다.

  • 바로 이전 계단에서 올라온 경우 : 3개 전 계단에서 점수 최댓값 + 이전 계단 점수 + 현재 계단 점수
  • 두 계단 전에서 올라온 경우 : 2개 전 계단에서 점수 최댓값 + 현재 계단 점수

이 두 가지 경우 중 더 큰 값이 해당 계단에서의 점수 최댓값이 된다.

 

Comments