728x90
배경
아따 포도주를 저렇게 많이 먹을 수 있는게 부럽다
시식이라면 꽁짜겠지 포도주로 취해보고 싶다
초록병 이스 마이 라이프
https://www.acmicpc.net/problem/2156
코드
n=int(input())
drink = []
for _ in range(n):
drink.append(int(input()))
dy=[0]*10001
drink.insert(0,0)
dy[1] = drink[1]
dy[2] = drink[1]+drink[2]
dy[3] = max(drink[3]+drink[1], drink[3]+drink[2], dy[2])
for i in range(4, n+1):
dy[i] = max(dy[i-3]+drink[i]+drink[i-1], drink[i]+dy[i-2], dy[i-1])
print(max(dy))
설명
조건에 연속으로 3잔을 마실 수 없다가 있다.
이를 위해서 지금 마시려는 포도주를 마시는게 이득인가 아닌가를 판별하면 된다.(대단한 술꾼 디오니소스인가?)
for문을 보게 되면 현재 index에 이번에 마시고 저번에 마신다면(i-1) dynamic list는 저저저번(dy-3)에 마신게 들어가야한다( 연속으로 3번을 마시면 안되니까)
또는 이번에 마시고 저저번에 마신게 더 이득인지 확인하거나
바로 저번에 마신게 이득인지 확인하면 된다
현재의 포도주를 꼭 마셔라는 법은 없었기 때문이다
ex) drink[3]이 1이라고 생각해보자 안마시는게 더 낫다
'자료구조&알고리즘' 카테고리의 다른 글
백준 | [파이썬 Python] 9251 LCS (0) | 2024.05.07 |
---|---|
[Python] 백준 - 스타드와 링크 14889 (0) | 2024.04.02 |
[Python] 백준 - 스도쿠 2850 (0) | 2024.04.02 |
[Python] N-Queen 9663 (0) | 2024.04.01 |