코딩테스트/백준 (python)
백준 / 2156번 / 포도주 시식 / python 파이썬
seulll
2024. 11. 7. 17:24
문제 : https://www.acmicpc.net/problem/2156
처음에 제출한 코드는 런타임 에러가 발생하였다.
n = int(input())
lst = [int(input()) for _ in range(n)]
dp = [0] * 10000
dp[0] = lst[0]
dp[1] = lst[0] + lst[1]
dp[2] = max(lst[0] + lst[2], lst[1] + lst[2], dp[1])
for i in range(3, n):
dp[i] = max(dp[i-3] + lst[i-1] + lst[i], dp[i-2] + lst[i], dp[i-1])
print(max(dp[-1]))
n이 3보다 작을 때의 예외 처리를 하여 다시 제출했더니 통과하였다.
나의 풀이
n = int(input())
lst = [int(input()) for _ in range(n)]
dp = [0] * n
if n == 1:
print(lst[0])
elif n == 2:
print(lst[0] + lst[1])
else:
dp[0] = lst[0]
dp[1] = lst[0] + lst[1]
dp[2] = max(lst[0] + lst[2], lst[1] + lst[2], dp[1])
for i in range(3, n):
dp[i] = max(dp[i-3] + lst[i-1] + lst[i], dp[i-2] + lst[i], dp[i-1])
print(dp[-1])