문제
Baekjoon 2156: 포도주 시식
- 설명: 포도주가 일렬로 놓아져있고, 세개 연속으로 먹지 못할 때 최대로 먹을 수 있는 양울 구하라
풀이
- i번째 포도주를 먹을 때는 i - 1, i - 2, i - 3번째 포도주를 먹을 때 먹을 수 있는 가장 큰 양을 먹고 먹으면 된다
- 이때 i - 1번째 포도주는 그 이전 포도주를 먹었으면 안되기 때문에, DP 테이블에 2가지 종류 (이전 포도주를 먹었는지, 안먹었는지)를 저장해준다
오늘의 회고
- i - 3 번째 포도주를 먹어야된다는 사실을 깜빡하고 계속 틀렸었다.
Code
n = int(input())
wine = [int(input()) for _ in range(n)]
dp = [
[0 for _ in range(n)],
[0 for _ in range(n)]
]
dp[0][0] = dp[1][0] = wine[0]
ans = wine[0]
if n > 1:
dp[0][1] = wine[1]
dp[1][1] = wine[0] + wine[1]
ans = max(ans, dp[0][1], dp[1][1])
for i in range(2, n):
if i > 2:
dp[0][i] = max(dp[0][i - 2], dp[1][i - 2], dp[0][i - 3], dp[1][i - 3]) + wine[i]
else:
dp[0][i] = max(dp[0][i - 2], dp[1][i - 2]) + wine[i]
dp[1][i] = dp[0][i - 1] + wine[i]
ans = max(ans, dp[0][i], dp[1][i])
print(ans)
필수 해시태그: #99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL
'Problem Solving > 항해99' 카테고리의 다른 글
99클럽 코테 스터디 14일차 TIL + DFS (0) | 2025.04.18 |
---|---|
99클럽 코테 스터디 13일차 TIL + Implementation (0) | 2025.04.16 |
99클럽 코테 스터디 11일차 TIL + 이진탐색 (0) | 2025.04.15 |
99클럽 코테 스터디 10일차 TIL + 많은 조건 분기 (0) | 2025.04.14 |
99클럽 코테 스터디 8일차 TIL + String (0) | 2025.04.09 |