코테 백준 2156 실버1

김동윤·2023년 8월 22일
0
post-thumbnail

백준 2156
이문제는 생각보다 같은 난이도에 비해 쉽게 풀렸다. 1번째 와인까지는 1번째 와인, 2번째 와인까지의 최대는 (1번째 와인 + 2번째 와인), 3번째 와인부터 경우가 3개로 나눠진다.

ex)예를 들어 3번째 와인까지의 최대

  1. 1번째 + 2번째
  2. 2번째 + 3번째
  3. 1번째 + 3번째

즉 max(dp[i-2]+wine[i],dp[i-1],dp[i-3]+wine[i]+wine[i-1]) 이렇게 된다.

n = int(input())
w = [0]
for i in range(n):
    w.append(int(input()))
dp = [0]
dp.append(w[1])
if n > 1:
    dp.append(w[1] + w[2])
for i in range(3, n + 1):
    dp.append(max(dp[i - 1], dp[i - 3] + w[i - 1] + w[i], dp[i - 2] + w[i]))
print(dp[n])
profile
Back-End

0개의 댓글