[ALGORITHM] BOJ 2579. 계단 오르기

less than 1 minute read


ALGORITHM Übung - 백준

  • 알고리즘 문제 풀이를 통한 코딩 테스트 연습
  • 각 계단은 비연속적인 값: n-2번째 계단의 값 + 자기자신 혹은 연속적인 값: n-1번째 계단의 값을 가질 수 있음
  • 이때, n번째 계단은 n-2번째 계단의 최대값 + 자기자신 혹은 n-1번째 계단의 연속적인 값 + 자기자신의 값을 가질 수 있음

문제

코드

import sys

def get_max_num(stairs):
    # value of n-2(continuous, discontinuous) and n-2(continuous, discontinuous)
    pairs = [(0, 0), (0, 0)]
    for stair in stairs:
        continuous, discontinuous = pairs[1][1] + stair, max(pairs[0]) + stair
        pairs[0] = (continuous, discontinuous)
        pairs[0], pairs[1] = pairs[1], pairs[0]
    return max(pairs[1])


if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())
    stairs = [int(sys.stdin.readline().strip()) for _ in range(n)]
    print(get_max_num(stairs))