문제 설명
https://www.acmicpc.net/problem/2579
문제 풀이
점화식 구하기
2번째 전 계단을 밟는 경우
=> D[i - 2] + floor[i]
1번째 전 계단을 밟는 경우 (연속된 세 계단을 밟으면 안 되기 때문에 3번째 계단을 밟고 1번째 전 계단으로 올라와야 한다)
=> D[i - 3] + floor[i - 1] + floor[i]
이 두 경우 중 최댓값이 D[i]이 된다!
점화식 : D[i] = max(D[i - 2] + floor[i], D[i - 3] + floor[i - 1] + floor[i])
n = int(input())
floor = [0] * 301
d = [0] * 301
for f in range(n):
floor[f + 1] = int(input())
d[1] = floor[1]
d[2] = floor[1] + floor[2]
d[3] = max(floor[1] + floor[3], floor[2] + floor[3])
for i in range(4, n + 1):
d[i] = max(d[i - 2] + floor[i], d[i - 3] + floor[i - 1] + floor[i])
print(d[n])
'알고리즘 > 백준' 카테고리의 다른 글
[백준`S1] 12852 - 1로 만들기 2 (Python) (0) | 2023.11.24 |
---|---|
[백준`S1] 1149 - RGB거리 (Python) (0) | 2023.11.22 |
[백준] 9095 - 1, 2, 3 더하기 (Python) (0) | 2023.11.21 |
[백준] 1012 - 유기농 배추 (Python) (1) | 2023.11.21 |
[백준] 1463 - 1로 만들기 (Python) (1) | 2023.11.20 |