-
[백준] 2156번 문제 (포도주 시식) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 8. 15. 19:241234567891011121314t = int(input())wines = [0] + [int(input()) for _ in range(t)]dp = [0] + [wines[1]]if t > 1:dp.append(wines[1] + wines[2])for i in range(3, t + 1):case1 = dp[i - 1] # 이번 포도주를 안 먹는 경우case2 = wines[i] + dp[i - 2] # 이번 포도주를 먹고 저번 포도주를 안 먹는 경우case3 = wines[i] + wines[i - 1] + dp[i - 3] # 이번 포도주를 먹고 저번 포도주를 먹는 경우dp.append(max(case1, case2, case3))print(dp[t])
cs 해당 포도주일때 경우의 수가 세 가지로 나뉜다.
1. 이번 포도주를 안 먹는 경우
2. 이번 포도주를 먹고 저번 포도주를 안 먹는 경우
3. 이번 포도주를 먹고 저번 포도주를 먹는 경우
이 3가지 경우에서 max값을 구해 dp에 append 하면서 답을 구한다.
dp 문제이긴 하지만 약간 그리디 문제 같기도 하다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 2579번 문제 (계단 오르기) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 9461번 문제 (파도반 수열) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 1699번 문제 (제곱수의 합) 파이썬(Python) 풀이 (0) 2021.08.14 [백준] 17103번 문제 (골드바흐 파티션) 파이썬(Python) 풀이 (0) 2021.08.11 [백준] 17299번 문제 (오등큰수) 파이썬(Python) 풀이 (1) 2021.08.06