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개 전 계단에서 점수 최댓값 + 현재 계단 점수
이 두 가지 경우 중 더 큰 값이 해당 계단에서의 점수 최댓값이 된다.