코딩테스트

[python] 백준 2579 : 계단 오르기 (실버 3)

Alpaca_data_cloud 2024. 7. 18. 11:35

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

해당 문제는 동적 프로그래밍으로 푸는 문제였고, 어떻게 구현하는지 몰라 gpt의 도움을 받아 작성했다. 그래도 코드에 대해서 100프로는 이해하지 못한거 같다... 다른 동적 프로그래밍 문제를 더 풀어봐야 할거 같다....

stair = int(input())
stairs = [int(input()) for _ in range(stair)]
dp = [0 for _ in range(stair)]

while True:
    if stair == 1:
        print(stairs[0])
        break
    elif stair == 2:
        print(stairs[0]+stairs[1])
        break

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

    print(dp[stair-1])
    break