본문 바로가기
백준

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

by 헤이즐넛 좋아하는 개발자 2024. 3. 9.

1. 문제와 예제

(문제 링크: https://www.acmicpc.net/problem/2579)

 

2579번: 계단 오르기

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

www.acmicpc.net

문제
예제


2. 전체 코드

import sys
input = sys.stdin.readline

# 입력 받기
N = int(input().rstrip()) # 계단의 개수

# 각 계단에 쓰여있는 점수 리스트
lst = [0] * 301
for i in range(1, N+1):
    lst[i] = int(input().rstrip())

# 다이나믹 프로그래밍 시작
dp = [0] * 301 # DP 테이블
dp[1] = lst[1]
dp[2] = lst[1] + lst[2]
dp[3] = max(lst[1] + lst[3], lst[2] + lst[3])

for i in range(4, N+1):
    dp[i] = max(dp[i-3] + lst[i-1] + lst[i], dp[i-2] + lst[i])

# 결과 출력하기
print(dp[N])

3. 코드 해설

생각 과정

1463번(1로 만들기) 문제와 같은 동적 프로그래밍(Dynamic Programming) 문제다. 점화식을 풀듯이 코드를 작성하면 된다.