문제 링크 : https://pacific-ocean.tistory.com/152
[백준] 2156번(python 파이썬)
문제 링크: https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도
pacific-ocean.tistory.com
풀이과정 :
3연속을 제외해야하는것 때문에 점화식을 도출해 내기가 쉽지않았다.
몇번의 생각 결과,
dp[i] = dp[i-3] + glasses[i-1]+[glasses[i] or dp[i-2] + glasses[i] or dp[i-1] 중에서
최대값을 찾아야한다는것이 핵심이다.
glass_num = int(input()) # 총 포도잔의 수
glasses = [0] #n번 포도잔에 담긴 포도주의 양
for i in range(glass_num):
glasses.append(int(input()))
dp = [0, glasses[1]]
if glass_num > 1:
dp.append(glasses[1] + glasses[2])
for i in range(3, glass_num+1):
dp.append(max(dp[i-3]+glasses[i-1]+glasses[i], dp[i-2]+glasses[i], dp[i-1]))
print(dp[glass_num])
풀이과정 :
동적프로그래밍이다 라고 생각을 안하고 풀었을때 이렇게 점화식을 세워서 유추해낼 수 있을지
걱정이다.
'Coding > 백준' 카테고리의 다른 글
[백준] 1697 - 숨바꼭질(BFS) - (python 파이썬) (0) | 2022.02.17 |
---|---|
[백준] 11576 - Base Conversion - (python 파이썬) (0) | 2022.02.14 |
[백준] 11052 - 카드 구매하기 - (python 파이썬) (0) | 2022.02.11 |
[백준] 11727 - 2*n 타일링 2 (동적프로그래밍) - (python 파이썬) (0) | 2022.02.07 |
[백준] 17298 - 오등큰수 - (python 파이썬) (0) | 2022.02.06 |