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

각 계단을 밟을때의 최대값을 dp배열에 저장한다. 이때 연속된 3개의 계단을 밟을 수 없다.
더보기
import sys
input = sys.stdin.readline
n = int(input())
step = []
for i in range(n):
step.append(int(input()))
dp = []
# 계단의 갯수가 1개,2개일 때를 생각해서
dp.append(step[0])
if n > 2:
dp.append(max(step[0] + step[1], step[1]))
dp.append(max(step[0] + step[2], step[1]+step[2]))
for k in range(3, n):
dp.append(max(dp[k-2]+step[k], dp[k-3]+step[k-1]+step[k]))
print(dp.pop())
elif n == 1:
print(step[0])
else:
print(step[0]+step[1])
https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
'Problem Solving > BOJ - Python' 카테고리의 다른 글
[Python | 파이썬] 백준 17142 연구소3 (0) | 2021.06.05 |
---|---|
[Python | 파이썬] 백준 파일 합치기 11066 (0) | 2021.05.27 |
[Python | 파이썬] 백준 10844 쉬운 계단 수 (0) | 2021.05.27 |
[Python | 파이썬] 백준 11053 가장 긴 증가하는 부분 수열 (0) | 2021.05.27 |
[Python | 파이썬] 백준 11054 가장 긴 바이토닉 부분 수열 (0) | 2021.05.27 |