Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동읍면 DB
- DBMS
- 인턴 지원
- 3단계 지역 DB
- 방명록 만들기
- reversing.kr
- 메모리 포랜식
- riceteacatpanda
- PyAmdecoder
- 정보보호병 후기
- webhacking 처음
- JSTL
- Forensic 절차
- EER
- react
- jsp
- 소개딩
- Django
- 소프트웨어 개발보안 경진대회
- Layered Architecture
- 인턴 후기
- restapi
- mysql
- spring
- Database
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- 네이버 인턴
- SessionAttribute
- frontend
- 행정지역 DB
Archives
- Today
- Total
웹찢남
[백준 2579 계단 오르기 문제] PYTHON 본문
이전의 RGB 문제와 비슷한 유형이다.
다른 점을 꼽으면 이차원 배열로 만들어진 dp가 아니라 1차원이고
RGB는 전 집의 색들로 min값을 찾아 dp를 구성했고
이 계단 오르기 문제는 전,2개전,3개전 집의 선택 여부로 dp를 구성한다
현재 집 i 로서는 dp[i-2]+cost[i-1]+cost[i] 아니면 dp[i-2]+cost[i] 두가지 경우밖에 없다.
여기서 dp란 해당 집이 선택됐을때의 점수 최대 값을 의미한다.
N = int(input())
cost= []
dp = [0 for i in range(301)]
for _ in range(N):
cost.append(int(input()))
if(N==1):
print(cost[0])
elif(N==2):
print(cost[0]+cost[1])
elif(N==3):
print(max(cost[0]+cost[2],cost[1]+cost[2]))
else:
dp[0]=cost[0]
dp[1]=cost[0]+cost[1]
dp[2]=max(cost[0]+cost[2],cost[1]+cost[2])
for i in range(3,N):
dp[i]=max(dp[i-3]+cost[i]+cost[i-1],dp[i-2]+cost[i])
print(dp[N-1])
계속 인덱스 에러가 나와서 if문으로 1,2,3의 경우를 처리했다.
'백준 Algorithm' 카테고리의 다른 글
[백준 10870 피보나치 수 5 문제] PYTHON (0) | 2021.04.15 |
---|---|
[백준 1932 정수 삼각형 문제] PYTHON (0) | 2021.04.15 |
[백준 1149 RGB거리 문제] PYTHON (0) | 2021.04.14 |
[백준 9095 1,2,3 더하기 문제] PYTHON (0) | 2021.04.13 |
[백준 1003 피보나치 함수] PYTHON (0) | 2021.04.13 |
Comments