백준 2579번 - 계단 오르기
백준 2579번 바로가기 나의 풀이 s = [] for _ in range(n:=int(input())): s.append(int(input())) points = [0]*n if n < 3: print(sum(s)) else: points[0] = s[0] points[1] = s[0] + s[1] points[2] = max(s[1]+s[2],s[0]+s[2]) for i in range(3,n): points[i] = max(points[i-2], points[i-3]+s[i-1]) + s[i] print(points[-1]) CODE REVIEW 중학교 창의력 수학 경시대회 단골소재 계단 오르기. 한 계단 또는 두 계단이라는 표현은 질릴도록 봤다. case별로 쪼개서 점화식을 설정하고 풀어내면 된다. 전 단계를 밟는 경우와/밟지 않는 경우로 나누면 모든 경우를 커버할 수 있다. max(points[i-2], points[i-3]+s[i-1]) 부분이 조금 까다롭긴 했는데 그외에는 무난한 문제였다.