https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
https://www.acmicpc.net/problem/2156
https://serendipity-37.tistory.com/41
Baekjoon / DP / 포도주 시식
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을
serendipity-37.tistory.com
포도주 시식 문제와 동일한 형태의 문제이다.
Input 조건만 조금 달라서 변경해주었다.
Solution
n = int(input())
step = [0]
for _ in range(n):
a = int(input())
step.append(a)
def solution(n, step):
dp = [False] * (n+1)
dp[0] = 0
# n은 300이하 자연수라는 조건이기에, 1 혹은 2가 나올 수도 있다.
if n == 1 :
return step[1]
elif n == 2 :
return step[1]+step[2]
else :
dp[1] = step[1]
dp[2] = max(dp[1]+step[2], step[2])
for i in range(3,n+1):
a = dp[i-2]+step[i] # i-1 건너뛰고 i번째 포함한 경우
b = dp[i-3]+step[i-1]+step[i] # i-1,i번째 연속으로 포함한 경우, i-2는 건너뛰어야함
# c = dp[i-1] # 마지막 계단을 무조건 포함해야하니까 제외됨.
dp[i] = max(a,b)
return dp[-1]
print(solution(n,step))
'Programming > DP' 카테고리의 다른 글
Baekjoon / 평범한 배낭 (0) | 2022.04.26 |
---|---|
Baekjoon / 소형기관차 (0) | 2022.03.22 |
Baekjoon / 다익스트라 알고리즘 / 최단 경로 (0) | 2022.02.14 |
Baekjoon / DP / 포도주 시식 (0) | 2022.02.12 |
Baekjoon / DP / 설탕 배달 (0) | 2022.02.12 |