문제 : 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])
'코딩테스트 > 백준 (python)' 카테고리의 다른 글
백준 / 1766번 / 문제집 / python 파이썬 (0) | 2024.11.17 |
---|---|
백준 / 12865번 / 평범한 배낭 / python 파이썬 (1) | 2024.11.12 |
백준 / 2164번 / 카드2 / python 파이썬 (0) | 2024.10.31 |
백준 / 14940번 / 쉬운 최단거리 / python 파이썬 (0) | 2024.10.17 |
백준 / 2293번 / 동전 1 / python 파이썬 (1) | 2024.10.10 |