https://www.acmicpc.net/problem/2156
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규
www.acmicpc.net
dp문제
해당 잔을 마실때 전과 전전경우를 확인하여 최댓값을 구하면 된다!
N = int(input())
lst = [int(input()) for _ in range(N)]
dp = [0] * N
dp[0] = lst[0]
if N > 1:
dp[1] = lst[0] + lst[1]
if N > 2:
dp[2] = max(dp[1], lst[0] + lst[2], lst[1] + lst[2])
if N > 3:
for i in range(3, N):
# 지금 잔 수에서 2잔을 마셨을 때 최대 -> 지금 잔 + 이전 잔 + 하나 건너 뛰고 이전전전 잔
# 지금 잔 수에서 1잔을 마셨을 때 최대 -> 지금 잔 + 하나 건너 뛰고 이전전 잔
# 지금 잔 수에서 안 마셨을 때 최대 -> 이전 잔
dp[i] = max(lst[i] + lst[i - 1] + dp[i - 3], lst[i] + dp[i - 2], dp[i - 1])
print(dp[-1])
'Algorithm > baekjoon' 카테고리의 다른 글
[파이썬]baekjoon 2644: 촌수계산 (0) | 2023.02.28 |
---|---|
[파이썬]baekjoon 3079: 입국심사 (1) | 2023.02.18 |
[파이썬]baekjoon 15810: 풍선 공장 (0) | 2023.02.16 |
[파이썬]baekjoon 4446: ROT13 (0) | 2023.02.15 |
[파이썬]baekjoon 6137: 문자열 생성 (0) | 2023.02.15 |
댓글