[백준/Python] - 2156 포도주 시식

2025. 5. 10. 16:52·백준[파이썬]
728x90
반응형
SMALL

https://www.acmicpc.net/problem/2156

 

제출코드

N = int(input())
dp = [0] * (N+1)
N_list = [0]
for _ in range(N):
    N_list.append(int(input()))
dp[1] = N_list[1]
if N > 1:
    dp[2] = N_list[1] + N_list[2]
for i in range(3,N+1):
    dp[i] = max(dp[i-1], dp[i-2] + N_list[i] , N_list[i-1] + N_list[i] + dp[i-3])
print(max(dp))

 

일단 dp를 0으로 초기화해줬다. dp[0]에도 0을 추가해줘서 dp인덱스와 N_list의 인덱스를 맞춰줬다.

아래 그림으로 점화식을 도출해보면

dp[1]과 dp[2]는 점화식이 따로 필요없이 확정이 되는 값이다 

dp[3]부터는 최대값을 고르는 방법이

  1. dp[0] + N_list[3]
  2. dp[2]
  3. dp[1] + N_list[3]

이렇게 3가지로 식을 세우면 연속3잔을 마시지 않는 조건을 만족한다.

 

 

 

인덱스 에러 코드

N = int(input())
dp = [0] * (N+1)
N_list = [0]
for _ in range(N):
    N_list.append(int(input()))
dp[1] = N_list[1]
dp[2] = N_list[1] + N_list[2]
for i in range(3,N+1):
    dp[i] = max(dp[i-1], dp[i-2] + N_list[i] , N_list[i-1] + N_list[i] + dp[i-3])
print(dp[N])

맨처음에 코드를 짤 때는 아무런 조건을 주지 않고 코드를 작성하다보니

N이 1일때 값 처리를 따로 하지 않아서 인덱스 에러가 났다.

N이 1일때는 dp[2]의 값이 없기때문에 N > 1보다 크다는 값을 따로 정해줘야한다.

 

그래서 N이 1보다 클때 다음과 같은 조건을 주었다.

if N > 1:
    dp[2] = N_list[1] + N_list[2]

 

728x90
반응형
LIST

'백준[파이썬]' 카테고리의 다른 글

[백준/Python] - 2565 전깃줄  (0) 2025.05.12
[백준/Python] - 11053 가장 긴 증가하는 부분수열  (1) 2025.05.11
[백준/Python] - 1463 1로 만들기  (1) 2025.05.08
[백준/Python] - 1912 연속합  (0) 2025.05.07
[백준/Python] - 1904 01타일  (0) 2025.05.07
'백준[파이썬]' 카테고리의 다른 글
  • [백준/Python] - 2565 전깃줄
  • [백준/Python] - 11053 가장 긴 증가하는 부분수열
  • [백준/Python] - 1463 1로 만들기
  • [백준/Python] - 1912 연속합
코린이 파닥거리기
코린이 파닥거리기
    반응형
    250x250
  • 코린이 파닥거리기
    코린이 파닥거리기의 블로그
    코린이 파닥거리기
  • 전체
    오늘
    어제
    • 분류 전체보기 (124) N
      • 백준[파이썬] (53) N
      • Spring (31)
      • CS (1)
      • 자바 (4)
      • 백준[자바] (20)
      • 프로그래머스 (5)
      • 토이프로젝트 (1)
      • SWEA (2)
      • MSA (6) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    JPA
    Java
    자바
    누적합
    MSA
    SpringBoot
    재귀
    스프링 부트와 AWS로 혼자 구현하는 웹 서비스
    db
    백준
    파이썬
    JWT
    SWEA
    스프링부트
    테스트코드
    spring
    스프링
    코딩테스트
    컨테이너
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코린이 파닥거리기
[백준/Python] - 2156 포도주 시식
상단으로

티스토리툴바