[백준] 포도주 시식 2156번
n 숫자 입력 받기
n 횟수 만큼 lis에 와인 추가
dp에 n 만큼 리스트 추가
n이 0인 경우 dp[0] == lis[0]
n이 1인 경우 dp[1] == lis[0]+lis[1]
n이 2인 경우 세게 연속이 안되니 lis 1,2와 0,2중 더 큰값으로 설정
n이 3이상 인경우 dp[i] = dp[i-1], dp[i-3]+lis[i-1]+lis[i], dp[i-2]+lis[i] 중 최대값으로 설정
파이썬
import sys
input = sys.stdin.readline
n = int(input())
lis = []
dp = [0] * n
for i in range(n):
lis.append(int(input()))
dp[0] = lis[0]
if n > 1:
dp[1] = lis[0] + lis[1]
if n > 2:
dp[2] = max(lis[1] + lis[2], lis[0] + lis[2], dp[1])
for i in range(3,n):
dp[i] = max(dp[i-1], dp[i-3]+lis[i-1]+lis[i], dp[i-2]+lis[i])
print(dp[n-1])
댓글남기기