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

yewon Lee·2023년 7월 19일
0


백준>2579번:계단 오르기


📘문제풀이

import sys

n = int(sys.stdin.readline())
step = [0 for _ in range(n+1)]
score = [0 for _ in range(n+1)]
for i in range(1,n+1):
    step[i] = int(sys.stdin.readline())

if n <= 2:
    print(sum(step))

else:
    score[1] = step[1]
    score[2] = step[1] + step[2]
    
    for i in range(3, n+1):
        score[i] = max(score[i-3]+step[i-1]+step[i], score[i-2]+step[i])   
               
    print(score[n])
혼자해보다가 계속 실패했는데 다른 사람의 코드를 보니 
계단이 3개일 때 값을 고정해두고 풀어서 계속 틀렸다.


오류나던 코드 수정

import sys

n = int(sys.stdin.readline())
step = [0 for _ in range(n+1)]
score = [0 for _ in range(n+1)]
for i in range(1,n+1):
    step[i] = int(sys.stdin.readline())

if n > 2:
    score[1] = step[1]
    score[2] = score[1] + step[2]
    for i in range(3, n+1):
        c1 = score[i-2] + step[i]
        c2 = score[i-3] + step[i-1] + step[i]
        
        score[i] = max(c1, c2)
    print(score[n])
        
else:
    print(sum(step))
profile
시작

0개의 댓글