문제 : https://www.acmicpc.net/problem/2156
이 문제의 가장 중요한 조건은 연속으로 3잔은 마실 수 없다는 것
가장 많은 양의 포도주를 마시기 위해서는 3가지 방법으로 나뉜다
i번째 잔을 마신다고 가정
1. 이번 포도주를 마시고 이전 포도주를 안 마신 경우
2. 이번 포도주를 마시지 않는 경우
3. 이번 포도주와 이전 포도주 모두 마신 경우
[소스코드]
n = int(input())
wine = [int(input()) for _ in range(n)]
dp = [0, wine[0]]
if n > 1:
dp.append(wine[0]+wine[1])
for i in range(3, n+1):
dp.append(max(dp[i-2]+wine[i-1], dp[i-1], dp[i-3]+wine[i-1]+wine[i-2]))
print(dp[n])
github.com/jisun1125/algorithm-problem-solving/blob/main/baekjoon/no_2156.py
'PS > 백준' 카테고리의 다른 글
[백준/Python(파이썬)] 1931 회의실 배정 (0) | 2021.02.16 |
---|---|
[백준/Python(파이썬)] 13398 연속합2 (0) | 2021.02.16 |
[백준/Python(파이썬)] 1912 연속합 (0) | 2021.02.15 |
[백준/Python(파이썬)] 14889 스타트와 링크 (0) | 2021.02.14 |
[백준/Python(파이썬)] 15657 N과 M (8) (0) | 2021.02.14 |