Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- softeer
- java
- programers
- 코테
- 현대sw
- 개발
- 알고리즘
- Android
- 소프티어
- GDSC
- baekjoon
- 플러터
- Python
- MVVM
- 머신러닝
- SWIFT
- 다트
- 아마존 웹 서비스
- DART
- Flutter
- 자바
- 백준
- aws
- VSCode
- 안드로이드
- 파이썬
- 스위프트
- 코틀린
- kotlin
- 프로그래머스
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 2156번(파이썬): 포도주 시식 본문
문제
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 |