*문제 출처는 백준에 있습니다.
문제 제목: 포도주 시식 / 2156번 (실버 1단계)
문제 사이트: https://www.acmicpc.net/problem/2156
문제 설명
나의 풀이
n = int(input()) # 포도주 잔의 개수
# 포도주 양 입력
wine = [int(input()) for _ in range(n)]
# dp 배열 초기화
dp = [0] * (n + 1)
if n == 1:
print(wine[0])
elif n == 2:
print(wine[0] + wine[1])
else:
dp[0] = wine[0]
dp[1] = wine[0] + wine[1]
dp[2] = max(wine[0] + wine[1], wine[1] + wine[2], wine[0] + wine[2])
for i in range(3, n):
dp[i] = max(dp[i - 1], dp[i - 2] + wine[i], dp[i - 3] + wine[i - 1] + wine[i])
print(dp[n - 1])
※ 알아야 할 것
계단오르기 문제랑 비슷하다!
https://www.acmicpc.net/problem/2579
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 체스판 다시 칠하기 / 1018번 / Python (2) | 2024.12.05 |
---|---|
백준 / 미로 탈출하기 / 17090번 / Python (0) | 2024.12.02 |
백준 / 유기농 배추 / 1012번 / Python (1) | 2024.11.26 |
백준 / 로프 / 2217번 / Python (0) | 2024.11.25 |
백준 / 설탕 배달 / 2839번 / Python (0) | 2024.11.23 |