2156:포도주 시식

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

풀이 1) 이차원 배열

  1. d[i][j]

    • 1~i 번째 포도주까지 마셨을 때, 마실 수 있는 포도주의 최대 양

      i번째 포두주 잔은 j 번 연속 마신 포도주 잔임
  2. a[i]

    • (i : 1~n)
    • i 번째 포도주의 양
  3. 결과

    • d[n][0] = max( d[n-1][0] , d[n-1][1], d[n-1][2] )
    • d[n][1] = d[n-1][0] + a[n]
    • d[n][2] = d[n-1][1] + a[n]

풀이 2) 일차원 배열

  1. d[i]

    • 1~i 번째 포도주까지 마셨을 때, 마실 수 있는 포도주의 최대 양
  2. a[i]

    • (i : 1~n)
    • i 번째 포도주의 양
  3. 결과

    • 0번 연속 : d[i] = d[i-1]
    • 1번 연속 : d[i] = d[i-2] + a[i]
    • 2번 연속 : d[i] = d[i-3] + a[i-1] + a[i]

img

Comments