일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 재귀함수
- 추석맞이 코딩챌린지
- Zip
- java
- DateTime
- 파이썬
- 위클리 챌린지
- 정렬
- python
- 정규식
- Set
- programmers
- 이분탐색
- backjoon
- divmod
- 자바
- 백준
- heapq
- Re
- 다익스트라
- 그리디
- 프로그래머스
- dfs
- BFS
- Combinations
- KAKAO BLIND RECRUITMENT
- 카카오
- lambda
- 수학
- 동적 계획법
Archives
- Today
- Total
상상쓰
[백준] 포도주 시식 본문
https://www.acmicpc.net/problem/2156
동적 계획알고리즘으로 조건에서 연속적으로 놓여있는 3잔을 모두 마실 수 없으므로 2잔을 연속으로 마시는 경우는 wine[i][0] 에 담았고 그렇지 않은 경우 중 최댓값을 M 으로 두어 wine[i][1] (= wine[i][1] + M) 에 담았다.
최종적으로 wine 에 들어있는 값 중 최댓값을 반환한다.
import sys
N = int(sys.stdin.readline())
wine = []
M = 0
answer = 0
for i in range(N):
wine.append([0, int(sys.stdin.readline())])
if N == 1:
answer = wine[0][1]
else:
wine[1][0] = wine[0][1] + wine[1][1]
for i in range(2, N):
wine[i][0] = wine[i-1][1] + wine[i][1]
if M < max(wine[i-2][0], wine[i-2][1]):
M = max(wine[i-2][0], wine[i-2][1])
wine[i][1] += M
a, b = wine[-1]
c, d = wine[-2]
answer = max(a, b, c, d)
print(answer)
'Coding Test' 카테고리의 다른 글
[프로그래머스] 단속카메라 (0) | 2021.07.07 |
---|---|
[프로그래머스] 행렬의 곱셈 (0) | 2021.07.06 |
[백준] 한조서열정리하고옴ㅋㅋ (0) | 2021.07.05 |
[백준] 과제 (0) | 2021.07.02 |
[프로그래머스] [3차] 자동완성 (0) | 2021.07.02 |
Comments