스파르탄 365 4주차 (4) 포도주 시식

새벽하늘·2021년 5월 6일
0
post-thumbnail

참고사이트 : 깨지고 부셔라

4주차

백준 2156번 포도주 시식

문제링크 : https://www.acmicpc.net/problem/2156

💡 풀이 전 계획과 생각

최대한 많이 -> max
앞선 계단오르기 문제 처럼 풀자!
-> 실패

💡 풀이

import sys
input = sys.stdin.readline

n = int(input())
wines = [0]
DP = [0]

for i in range(1,n+1):
    wines.append(int(input()))

DP.append(wines[1])

if n > 1:
    DP.append(wines[1]+wines[2])

for i in range(3, n+1):
    # dp[i] = (max(dp[i-2] + stairs[i], dp[i-3] + stairs[i-1] + stairs[i]))
    DP.append(max(DP[i-1], DP[i-3]+wines[i-1]+wines[i], DP[i-2]+wines[i]))

print(max(DP))

막혔던 점과 고민

🧐 막혔던 점

  • 런타임에러
    * 테스트케이스를 넣었을 때는 잘 작동하는 데, 제출만 하면 런타임 에러가 났다.
  • 해결
    - 예외처리가 부족했다. n == 1인 경우를 생각하지 않아서 났던 에러였다.
    ! IndexError 발생
    DP.append(wines[1])
	DP.append(wines[1]+wines[2])
- 수정 코드
DP.append(wines[1])
# DP.append(wines[1]+wines[2])

if n > 1:
    DP.append(wines[1]+wines[2])

👏🏻 알게된 개념과 소감

  • 주어진 범위에서 최소, 최대값을 꼭 넣어볼 것!!
  • 참고 사이트 처럼 5까지는 표를 그려서 점화식을 세워볼것
profile
만들고 싶은 거 다 만들 수 있는 그날까지

0개의 댓글