백준 2579 계단 오르기

6071 단어 백준백준

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

이것도 해설을 봤다.
https://sungmin-joo.tistory.com/18
끝점을 어떻게 처리해야되는지 몰랐는데, 그럴필요가없었다.
그냥 한계단 한계단씩 그전꺼 더한거의 max를 입력해주면 되는것이였다.. dp처럼 생각하는 사고방식을 아직 갖추지 못해서 생각이 안된다

그런데 저 해설 사이트에 나온대로 하면 indexerror가 난다.
계단수가 1, 2 일때는 조건을 따로 정해줘야 한다. arr[1], arr[2]가 각각 없기때문

n = int(input())
arr = []
dp = []

for _ in range(n):
    arr.append(int(input()))
if n == 1:
    print(arr[0])
elif n == 2:
    print(arr[0]+arr[1])
else:
    dp.append(arr[0])
    dp.append(max(arr[0]+arr[1], arr[1]))
    dp.append(max(arr[0]+arr[2], arr[1]+arr[2]))

    for i in range(3, n):
        dp.append(max(dp[i - 2] + arr[i], dp[i - 3] + arr[i] + arr[i - 1]))

    print(dp.pop())

좋은 웹페이지 즐겨찾기