[백준] 2156: 포도주 시식 (Python)

JiKwang Jeong·2021년 11월 11일
0
post-custom-banner

문제📖

풀이🙏

  • dp 값을 갱신하기 위해 현재 위치에서 포도주를 마실 것인지 안마실것인지 상황을 구분한다.
    1) 현재 위치 포도주를 안마시기
    dp[i] = dp[i-1]
    2) 전전 포도주를 안마시고 현재 위치 포도주 마시기
    dp[i] = dp[i-3]+data[i-1]+data[i]
    3) 전 포도주를 안마시고 현재 위치 포도주 마시기
    dp[i] = data[2]+data[0]
  • 이중 가장 큰 값을 선택하여 테이블을 갱신한다.

코드💻

data = [0]*10000
n = int(input())
for i in range(n):
    data[i] = (int(input()))

dp = [0] * 10000
dp[0] = data[0]
dp[1] = data[0]+data[1]
dp[2] = max(dp[1], data[1]+data[2], data[2]+data[0])

# 현재 위치 포도주 안마시기
# 전전 포도주 안마시고 현재 위치 포도주 마시기
# 전 포도주 안마시고 현재 위치 포도주 마시기
for i in range(3, n):
    dp[i] = max(dp[i-1], dp[i-3]+data[i-1]+data[i], dp[i-2]+data[i])
print(max(dp))
profile
기억보다 기록, 난리보다 정리
post-custom-banner

0개의 댓글