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

2023. 3. 21. 11:11·Algorithm/백준 (BOJ)
반응형

문제 링크

https://www.acmicpc.net/problem/2579


문제

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

 

<그림 1>

 

예를 들어 <그림 2>와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.

<그림 2>

 계단 오르는 데는 다음과 같은 규칙이 있다.

 

  1. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.
  2. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.
  3. 마지막 도착 계단은 반드시 밟아야 한다.

 

따라서 첫 번째 계단을 밟고 이어 두 번째 계단이나, 세 번째 계단으로 오를 수 있다. 하지만, 첫 번째 계단을 밟고 이어 네 번째 계단으로 올라가거나, 첫 번째, 두 번째, 세 번째 계단을 연속해서 모두 밟을 수는 없다.

각 계단에 쓰여 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 총 점수의 최댓값을 구하는 프로그램을 작성하시오.


풀이

score[i]는 i번째 계단에 쓰여 있는 점수이고 stairs[i]는 i번째 계단을 뜻한다.
아래 풀이는 편의상 score는 sc, stairs는 st로 줄여서 작성하였다.


정답 코드

import sys
input = sys.stdin.readline

n = int(input())
score = [0] * 301
stairs = [0] * 301

for i in range(n):
    score[i] = int(input())

stairs[0] = score[0]
stairs[1] = score[0] + score[1]
for i in range(2, n):
    stairs[i] = max(stairs[i-2] + score[i], stairs[i-3] + score[i-1] + score[i])

print(stairs[n-1])
반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 2156번: 포도주 시식  (0) 2023.03.26
[Python] 백준/BOJ 9461번: 파도반 수열  (0) 2023.03.22
[Python] 백준/BOJ 11726번: 2×n 타일링  (0) 2023.03.20
[Python] 백준/BOJ 9095번: 1, 2, 3 더하기  (0) 2023.03.19
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 2156번: 포도주 시식
  • [Python] 백준/BOJ 9461번: 파도반 수열
  • [Python] 백준/BOJ 11726번: 2×n 타일링
  • [Python] 백준/BOJ 9095번: 1, 2, 3 더하기
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • SSAFY (10)
      • Algorithm (82) N
        • 이론 (5)
        • 백준 (BOJ) (76) N
        • 프로그래머스 (1)
      • Frontend (6) N
      • React (13)
      • Next.js (3)
      • Vue (4)
      • Node.js (3)
      • Trouble Shooting (7)
      • HTML (9)
      • DevOps (3)
        • Git (3)
      • Language (9)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    React
    자바
    SSAFY
    렌더링최적화
    Algorithm
    브루트포스
    dfs
    Next.js
    재귀
    누적합
    티스토리챌린지
    백준
    해시
    알고리즘
    github
    SSAFYcial
    Java
    강의
    vue
    카카오맵
    html5
    오블완
    싸피
    우선순위큐
    블록체인
    Error
    DP
    파이썬
    bfs
    kakaomap
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 2579번: 계단 오르기
상단으로

티스토리툴바