DevLog:-)

[알고리즘][파이썬]2579-계단오르기 본문

알고리즘/백준

[알고리즘][파이썬]2579-계단오르기

hyeon200 2023. 7. 13. 23:38
반응형

문제

코드

n=int(input()) 
s=[int(input()) for _ in range(n)] 
dp=[0]*(n) # dp 리스트
if len(s)<=2: # 계단이 2개 이하일땐 그냥 다 더해서 출력
    print(sum(s))
else:
    dp[0]=s[0] # 첫번째 계단
    dp[1]=s[0]+s[1] # 두번째 계단 
    for i in range(2,n): # 3번째 계단 부터 dp알고리즘으로 최대값 구하기
        dp[i]=max(dp[i-3]+s[i-1]+s[i], dp[i-2]+s[i])
    print(dp[-1])

 

dp를 이용하여 문제를 풀었다.

for문을 돌 때 처음에 i가 2일 때부터 시작하게 되는데 dp[i-3]이 dp[-1]이 된다. 

dp[-1]은 뒤에서 첫 번째 문자인 0이 된다. 

따라서 정상적으로 코드가 실행된다. 

 

😅발생한 오류  

런타이 에러(indexError)가 나왔는데 계단의 수가 3보다 적을 때를 고려하지 않았기 때문에 

발생한 오류였다. 예외상황을 먼저 고려하는 습관을 들여야겠다. 

반응형