250x250
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
- 15649
- 9020
- 밑바닥부터 시작하는 딥러닝
- 1101
- 재귀
- 1002
- 개발환경
- 파이썬
- 신경망 학습
- 가상환경
- Mac
- N-Queen
- 그리디 알고리즘
- 경사하강법
- 기계학습
- pyenv
- 4948
- 실버
- BOJ
- 백트래킹
- Python
- 설정
- n과 m
- end to end
- 손실함수
- 백준
- streamlit
- 파이싼
Archives
- Today
- Total
파이톨치
[BOJ][Python] 2156-포도주 시식 본문
728x90
[문제 및 출처]
https://www.acmicpc.net/problem/2156
[어떻게 풀까?]
계단 오르기와 굉장히 유사하지만 한가지 다른 점이 있는데, 그건 건너뛰는 것이다. 계단오르기의 경우 마지막 계단을 무조건 올라야 했지만 포도주 시식은 그럴 필요가 없다. 또한 필요에 따라서 3개씩 건너서 마셔도 된다.
대충 그림으로 그리면 이런식으로 될 것이다. 중간에 글자는 NO를 쓴것이다 ^^.
[코드]
n = int(input())
nums = []
dp = [0 for i in range(n)]
for i in range(n):
new = int(input())
nums.append(new)
if n > 0:
dp[0] = nums[0]
if n > 1:
dp[1] = nums[1] + nums[0]
if n > 2:
dp[2] = max(nums[0]+nums[1], nums[0]+nums[2], nums[1]+nums[2])
for i in range(3, n):
dp[i] = max(dp[i-1], dp[i-3] + nums[i-1]+nums[i], dp[i-2]+nums[i])
print(max(dp))
728x90
'알고리즘' 카테고리의 다른 글
[백준] 그리디 알고리즘 - 회의실 배정 (0) | 2021.08.11 |
---|---|
[백준] 그리디 알고리즘-동전0 (0) | 2021.08.10 |
[BOJ][Python] 2579번-계단 오르기 (0) | 2021.08.07 |
[BOJ][Python][2580] 스도쿠 - 시간초과 (0) | 2021.08.04 |
[BOJ][Pyhon][9184] 신나는 함수 실행 (0) | 2021.08.02 |