less than 1 minute read

문제링크

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])

카테고리:

업데이트:

댓글남기기