문제 링크
https://www.acmicpc.net/problem/2579
문제
문제 풀이
전형적인 DP 방식으로 풀리는 문제이다.
주의해야 할 점은 현재 계단(i), 바로 아래 계단을 오를 경우 두 계단을 연속으로 올랐기 때문에
i - 3까지의 최댓값에 두 계단의 값을 더해야 한다는 점이다!
n = int(input())
array = [0] * 300
for i in range(n):
array[i] = int(input())
dp = [0] * 300
dp[0] = array[0]
dp[1] = array[0] + array[1]
dp[2] = max(array[1] + array[2], dp[0] + array[2])
for i in range(3, n):
dp[i] = max(dp[i - 2] + array[i], dp[i - 3] + array[i - 1] + array[i])
print(dp[n - 1])
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 9461 파도반 수열 (파이썬 python) (0) | 2022.01.19 |
---|---|
[백준] 1699 제곱수의 합 (파이썬 python) (0) | 2022.01.19 |
[백준] 2156 포도주 시식 (파이썬 python) (0) | 2022.01.18 |
[백준] 9465 스티커 (파이썬 python) (0) | 2022.01.18 |
[백준] 1463 1로 만들기 (파이썬 python) (0) | 2022.01.15 |