[ALGORITHM] BOJ 2579. 계단 오르기
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))