https://www.acmicpc.net/problem/2156
#Solution
result[i]의 최댓값을 구하는 것은 세 가지 방법에 의해 결정된다.
1) OXOO: 연속 두 개
2) OXO: 하나 띄고 한 개
3) X: i번째를 마시지 않는 경우
wine = int(input())
wine_capa = [0]
result = [0 for _ in range(wine + 1)]
for _ in range(wine):
wine_capa.append(int(input()))
for i in range(1, wine + 1):
if i == 1:
result[1] = wine_capa[1]
elif i == 2:
result[2] = wine_capa[1] + wine_capa[2]
else:
result[i] = max(result[i-3] + wine_capa[i-1] + wine_capa[i], result[i-2] + wine_capa[i], result[i-1])
print(result[i])
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#157 백준 파이썬 [2565] 전깃줄 - LIS (1) | 2019.10.28 |
---|---|
#156 백준 파이썬 [11054] 가장 긴 바이토닉 부분 수열 - LIS (0) | 2019.10.28 |
#154 백준 파이썬 [10844] 쉬운 계단 수 (0) | 2019.10.27 |
#153 백준 파이썬 [2960] 에라토스테네스의 체 (0) | 2019.10.25 |
#152 백준 파이썬 [1929] 소수 구하기 (0) | 2019.10.25 |