문제
2156번: 포도주 시식
효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규
www.acmicpc.net
알고리즘
- dp를 통해 포도주의 양을 리스트로 표현한다.
- 현재 포도주를 안 먹는 경우와 연속으로 포도주를 먹는 경우와 이전 포도주를 안 먹는 경우를 비교하여 dp 리스트의 포도주의 양을 넣는다.
코드
import sys
n = int(sys.stdin.readline())
m = [0] * 10001
for k in range(1, n + 1):
m[k] = int(sys.stdin.readline())
dp = [0] * 10001 # 각 잔까지 먹을 수 있는 포도주 양
dp[0] = m[0]
dp[1] = m[1]
dp[2] = m[1] + m[2]
# 반복문을 통해 각 잔의 최대 포도주 양을 구한다.
for i in range(3, n + 1):
# 현재 포도주를 안먹는 경우, 연속적으로 포도주를 먹는 경우, 이전 포도주를 안먹고 현재 포도주를 먹는경우
dp[i] = max(dp[i - 1], dp[i - 3] + m[i - 1] + m[i], dp[i - 2] + m[i])
print(dp[n])
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2193번(파이썬): 이친수 (0) | 2021.11.28 |
---|---|
[baekjoon] 백준 1149번(파이썬): RGB 거리 (0) | 2021.11.27 |
[baekjoon] 백준 1912번(파이썬): 연속합 (0) | 2021.11.25 |
[baekjoon] 백준 1932번(파이썬): 정수 삼각형 (0) | 2021.11.24 |
[baekjoon] 백준 11053번(파이썬): 가장 긴 증가하는 부분 수열 (0) | 2021.11.23 |