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 |
29 | 30 | 31 |
Tags
- golang
- 백준
- Dynamic Programming
- Top-down
- GCP
- mobaXTerm
- docker
- kubernetes
- k8s
- 피보나치
- BubbleSort
- Programmers
- 파이썬
- KAKAO
- cpu scheduling
- 알고리즘
- github
- Backjoon
- Python
- Kotlin
- 그리디
- GKE
- java
- Codility
- easy
- Singleton Pattern
- LeetCode
- go
- Observer Pattern
Archives
- Today
- Total
To Be Developer
[BackJoon : 백준] 2579번 : 계단오르기 (Python) 본문
https://www.acmicpc.net/problem/2579
[Python 풀이]
stScore = []
# 계단의 수
stairs = int(input())
# 최대 300개의 계단이 존재
mxScore = [None] * 300
# 첫 번째 input 값에 따른 계단 별 점수를 받기위한
# input 반복
for i in range(stairs):
stScore.append(int(input()))
# 점화식 dp[n] = max(dp[n-3] + arr[n-1] + arr[n], dp[n-2]+arr[n])
# 0~stair-1 까지 반복하여 그 계단까지 갈 수 있는 최대 점수를 계산
for i in range(stairs):
# i 가 0 일땐 stScore[i] 가 최대값이 됨
if i == 0:
mxScore[0] = stScore[i]
continue
# i가 1 인 경우 0~1 까지 의 계단 점수를 더한 값이 최대값
elif i == 1:
mxScore[1] = stScore[0]+stScore[1]
continue
# i 값이 2 인 경우 0번과 1번 중 더 큰 계단 점수를 더해줌
elif i == 2:
mxScore[2] = max(stScore[0], stScore[1]) + stScore[2]
continue
# i가 3 이상인 경우 점화식에 따라 계산
mxScore[i] = max(mxScore[i-3] + stScore[i-1], mxScore[i-2]) + stScore[i]
print(mxScore[stairs-1])
'알고리즘 > BackJoon' 카테고리의 다른 글
[BackJoon : 백준] 10825번 : 국영수 (Python) (0) | 2019.04.17 |
---|---|
[BackJoon : 백준] 1037번 : 약수 (Python) (0) | 2019.04.16 |
[BackJoon] 9095번 : 1, 2, 3 더하기 (GoLang) (0) | 2019.04.13 |
[BackJoon] 1463번 : 1로 만들기 (GoLang) (0) | 2019.04.12 |
[BackJoon] 2748. 피보나치 수 2 (0) | 2019.03.09 |