-
[백준 2156번] 포도주 시식Coding Test/백준 2021. 1. 30. 01:53
# 문제
내 풀이 - 문제 풀이 실패, 수정 답안
n = int(input()) wine = [0] # 인덱스를 맞추기 위해 0 추가 # 와인 정보 입력 받기 for _ in range(n): wine.append(int(input())) # DP 테이블 생성 및 초기화 dp = [0] * 10001 dp[1] = wine[1] if n > 1: dp[2] = wine[1] + wine[2] for i in range(3, n + 1): # 3가지 경우를 고려 # 1. i 번째 와인을 마시지 않는 경우 # 2. i 번째 외인을 마시는 경우 # - 2-1. i - 1 번째 와인을 마시는 경우 # - 2-2. i - 1 번째 와인을 마시지 않는 경우 dp[i] = max(dp[i - 1], dp[i - 3] + wine[i - 1] + wine[i], dp[i - 2] + wine[i]) print(dp[n])
생각해볼 점
경우의 수를 잘 나누지 못해 문제 푸는 것이 어려웠다. 아이디어 기억하자.
'Coding Test > 백준' 카테고리의 다른 글
[백준 11650번] 좌표 정렬하기 (0) 2021.02.06 [백준 11053번] 가장 긴 증가하는 부분 수열 (0) 2021.01.30 [백준 1181번] 단어 정렬 (0) 2021.01.27 [백준 10844번] 쉬운 계단 수 (0) 2021.01.25 [백준 1463번] 1로 만들기 (0) 2021.01.24