| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - 자료구조
 - 그래프 이론
 - programmers
 - 문자열
 - 딕셔너리
 - level2
 - web
 - CSS
 - 정렬
 - 다이나믹 프로그래밍
 - 프로그래머스스쿨
 - DP
 - 구현
 - 파이썬
 - BASIC
 - 스택
 - 자바스크립트
 - 그래프이론
 - 프로그래머스
 - 브루트포스 알고리즘
 - 백준
 - 너비 우선 탐색
 - 웹 프론트엔드
 - 알고리즘
 - lv2
 - 그리디 알고리즘
 - DFS
 - 그래프 탐색
 - JavaScript
 - BFS
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
DevLog:-)
[알고리즘][파이썬]2579-계단오르기 본문
반응형
    
    
    
  문제

코드
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보다 적을 때를 고려하지 않았기 때문에
발생한 오류였다. 예외상황을 먼저 고려하는 습관을 들여야겠다.
반응형
    
    
    
  '알고리즘 > 백준' 카테고리의 다른 글
| [알고리즘][파이썬]1309-동물원 (0) | 2023.07.17 | 
|---|---|
| [알고리즘][파이썬]2839-설탕 배달 (0) | 2023.07.17 | 
| [알고리즘][파이썬]14501-퇴사 (0) | 2023.07.12 | 
| [알고리즘][파이썬]1302-베스트 셀러 (0) | 2023.07.10 | 
| [알고리즘][파이썬]2443-별찍기 -6 (0) | 2023.07.08 |