cmod.ify
[2579] 계단 오르기 본문
728x90
반응형
처음에 점화식 쉽게 생각해서
d[i-1] + s[i] 전칸까지의 합이랑 d[i-2] + s[i] 전전칸 까지의 합 중에 최댓값 구하면 되는게 아닌가 생각했는데
그러면 무조건 모든 칸을 밟게 됨
규칙에선 3번 연속 밟으면 안 된다고 했음
d[i-2]+stair[i] 한칸을 띄운 버전이랑 d[i-3] 두칸 전까지의 합에 한칸을 띄우고 stair[i-1] 이전칸의 합과 stair[i]현재까지의 합을 더해야 한다
import sys
input = sys.stdin.readline
stair = [0] * 301
n = int(input())
for i in range(1, n+1):
t = int(input())
stair[i] = t
d = [0] * 301
d[1] = stair[1]
d[2] = stair[1] + stair[2]
d[3] = max(d[1]+stair[3], d[0]+stair[2]+stair[3])
for i in range(2, n+1):
d[i] = max(d[i-2]+stair[i], d[i-3]+stair[i-1]+stair[i])
print(d[n])
728x90
반응형
'BASIC > 코딩테스트' 카테고리의 다른 글
| [9375] 패션왕 신해빈 (0) | 2025.12.22 |
|---|---|
| [9095] 1,2,3 더하기 (0) | 2025.12.22 |
| [1463] 1로 만들기 (0) | 2025.12.19 |
| 삼각형 만들기 (0) | 2025.12.19 |
| [1003] 피보나치 함수 (0) | 2025.12.19 |