728x90
반응형
Silver III
# 2579 계단 오르기
링크 : https://www.acmicpc.net/problem/2579
풀이
N = int(input())
li = [0]*300 # [0 for i in range(N)] 적용 시 indexerror 발생
dp = [0]*300
for i in range(N):
nums = int(input())
li[i] = nums
dp[0] = li[0]
dp[1] = li[0]+li[1]
dp[2] = max(li[1]+li[2], li[0]+li[2])
for i in range(3, N):
dp[i] = max(li[i]+li[i-1]+dp[i-3], li[i]+dp[i-2])
print(dp[N-1])
후기
- 다른 분의 풀이를 통해서 어림잡아 이해해볼 수 있었다.
- 혼자서 다시 시도해볼 때 indexerror가 발생했다. N이 1일 경우 li[2]를 참조할 수 없는 오류가 발생하기 때문이다.
- 때문에 li를 입력값의 저장공간으로 활용할 수 있도록 최대 공간을 확보한다 (N은 300이하의 수)
- range(3, N)일 때, N이 3보다 작게 되면 range 문은 동작하지 않고 종료된다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 2480 주사위 세개 (0) | 2022.02.15 |
---|---|
[백준 파이썬] # 1904 01타일 (0) | 2022.02.15 |
[백준 파이썬] # 2525 오븐 시계 (0) | 2022.02.14 |
[백준 파이썬] # 1932 정수 삼각형 (0) | 2022.02.12 |
[백준 파이썬] # 1002 터렛 (0) | 2022.02.12 |