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 |
Tags
- 프로그래머스
- 백준 17779
- 백준 16236
- 파이썬
- Spring Boot
- 백준
- MySQL
- 백준 19238
- spring security
- 백준 파이썬
- MSA
- spring cloud
- 백준 16719
- springboot
- java 기술면접
- 프로래머스
- re.split
- 백준 15685
- JPA
- Spring
- 백준 17626
- with recursive
- spring oauth
- 웹어플리케이션 서버
- 백준 16235
- java
- sql 기술면접
- JVM
- Coroutine
- Kotlin
Archives
- Today
- Total
시작이 반
[백준] 2579번(python 파이썬) 본문
SMALL
현재 계단으로 온 경우는 2가지이다.
1. 1단계전 계단에서 온경우
2. 2단계전 계단에서 온경우
1번일 경우
연속으로 계단을 올라갈 수 없으므로
이전에 2단계전 계단에서 올라온 경우에 현재 계단의 비용을 더한다.
2번일 경우
2단계전 계단에서 온경우의 최대값과 현재 계단의 비용을 더한다.
cost[0][0]. cost[0][1] 은 0단계 임으로 0이다
i, j | 0 : 연속으로 계단을 1칸씩 올라온경우 ex) 1->2 |
1 : 2단계씩 계단을 오른 경우 |
1 | cost[1] | cost[1] |
2 | dp[1][1] + cost[2] | max(dp[0][0], dp[0][1]) + cost[2] |
3 | dp[2][1] + cost[3] | max(dp[1][0], dp[1][1]) + cost[3] |
4 | dp[3][1] + cost[4] | max(dp[2][0], dp[2][1]) + cost[4] |
5 | dp[4][1] + cost[5] | max(dp[3][0], dp[3][1]) + cost[5] |
6 | dp[5][1] + cost[6] | max(dp[4][0], dp[4][1]) + cost[6] |
n = int(input())
cost = [0]
dp = [[0] * 2 for _ in range(n + 1)] # [][0] : 연속, [][1] : 2칸
for _ in range(1, n + 1):
cost.append(int(input()))
def stair():
dp[1][0] = cost[1]
dp[1][1] = cost[1]
for i in range(2, n + 1):
for j in range(2):
if j == 0:
dp[i][j] = dp[i - 1][1] + cost[i]
else:
dp[i][j] = max(dp[i - 2]) + cost[i]
stair()
print(max(dp[n]))
LIST
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2156번(python 파이썬) (0) | 2021.02.09 |
---|---|
[백준] 1463번(python 파이썬) (0) | 2021.02.08 |
[백준] 1932번(python 파이썬) (0) | 2021.02.08 |
[백준] 9461번(python 파이썬) (0) | 2021.02.06 |
[백준] 9461번(python 파이썬) (0) | 2021.02.06 |