일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 정렬
- JavaScript
- BASIC
- 브루트포스 알고리즘
- programmers
- 프로그래머스
- 딕셔너리
- 그리디 알고리즘
- DP
- 그래프이론
- CSS
- BFS
- 파이썬
- 그래프 탐색
- level2
- 구현
- 백준
- 프로그래머스스쿨
- 다이나믹 프로그래밍
- 그래프 이론
- 자료구조
- 스택
- lv2
- 웹 프론트엔드
- 너비 우선 탐색
- 문자열
- 알고리즘
- 자바스크립트
- DFS
- web
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 |