순차 야추

시간 제한2초메모리 제한512 MB

요약
최대 195개의 주사위 값을 카테고리 13개 순서에 맞게 연속된 범위로 나누어 배정하고 Yahtzee 최고 점수를 계산합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 누적 합, 구현, 수학
정답자
아직 제출이 없습니다

문제

Danny는 휴대용 야추(Yahtzee) 게임을 즐겨 한다(90년대 감성이다!). 야추의 목표는 주사위 5개의 굴림 결과를 13개 카테고리 중 하나에 배치해 점수를 얻는 것이다. 카테고리는 아래에 나열되어 있으며, 각 카테고리의 점수 계산법도 함께 제시되어 있다:

3-of-a-Kind(또는 4-of-a-Kind)는 5개 주사위 중 적어도 세 개(또는 네 개)가 같은 값을 보이는 경우이다. Full House는 같은 값의 주사위 3개와 다른 같은 값의 주사위 2개로 구성된다(두 값은 서로 다르다). Small Straight는 임의의 주사위 네 개가 연속된 네 값을 이루는 경우, Long Straight는 다섯 개가 연속된 값을 이루는 경우, Yahtzee는 다섯 개 주사위가 모두 같은 값을 보이는 경우이다. Chance 카테고리는 어떤 주사위 다섯 개에도 사용할 수 있다. 예를 들어 주사위 다섯 개가 2가 네 개와 5가 하나를 보였다면, 2's 카테고리에 넣으면 8점, 5's 카테고리에 넣으면 5점, 3-of-a-Kind, 4-of-a-Kind 또는 Chance 카테고리 중 하나에 넣으면 13점을 얻는다. 다른 카테고리에 넣으면 0점을 얻는다.

게임은 13라운드로 구성된다. 각 라운드 시작 시 주사위 5개를 모두 굴린다. 주사위 5개를 아직 사용하지 않은 카테고리에 배정하거나, (더 일반적으로는) 원하는 개수의 주사위를 다시 굴릴 수 있다(5개 전부도 가능하다). 이 과정을 한 번 더 할 수 있으며, 최대 세 번째 굴림 이후에는 사용하지 않은 카테고리에 주사위를 배치해야 한다. 13라운드가 끝나면 모든 카테고리가 사용되고, 각 카테고리에서 얻은 점수를 합산한다.

일반 야추에서는 매 라운드 후 어떤 점수 카테고리를 사용할지 스스로 선택한다. 실제로 어떤 카테고리를 사용할지 결정하는 것이 야추의 어려움 중 하나이다. Danny는 보통 이렇게 플레이하지만, 앞서 말했듯 야추를 아주 많이 하기 때문에 가끔 규칙을 바꾸고 싶어 한다. 그가 좋아하는 변형 중 하나는 스스로 '순차 야추'라고 부르는 것이다. 이 버전에서는 첫 번째 굴림 이후 사용할 수 있는 카테고리가 1's(휴대용 게임의 첫 번째 카테고리)뿐이다. 그다음부터는 두 번째 카테고리에 2's를, 그다음에는 3's를 사용해야 하며, (위 표에 제시된 카테고리 순서대로) Yahtzee 카테고리에 도달할 때까지 이어진다.

예를 들어 Danny의 게임에 결함이 있어 주사위가 1만 굴린다고 하자(꽤 오래된 게임이다). 첫 라운드 후 Danny는 (당연히도) 1이 다섯 개인 조합을 얻는다. 일반 야추라면 Yahtzee로 50점을 얻을 수 있지만, 순차 야추에서는 1's 카테고리에 넣어야 하므로 5점을 얻는다. 다시 1이 다섯 개 나오면 2's 카테고리에 넣어야 하고 0점을 얻는다. 다음 4라운드 동안에도 3's, 4's, 5's, 6's 카테고리에 1이 다섯 개를 넣어 0점을 얻는다. 그다음 두 라운드에서는 5점씩을 얻는데, 먼저 3-of-a-Kind에, 그다음 4-of-a-Kind에 1이 다섯 개를 넣는다. 그다음 두 라운드에서는 아무것도 얻지 못하고, Chance 카테고리에서 5점을 얻은 뒤 마침내 13번째 라운드에서 Yahtzee로 50점을 얻는다. 모두 합쳐 70점이다.

Danny는 게임의 모든 주사위 굴림을 기록하며, 순차 야추 게임에서 자신이 실제로 한 것보다 더 잘할 수 있었는지 자주 궁금해한다. 당신의 임무는 간단하다. 연속된 주사위 굴림이 주어졌을 때, 순차 야추 게임에서 가능한 최대 점수는 얼마인가? 글쎄, 어쩌면 문제 설명만 간단한 것일지도 모른다.

입력

입력은 주사위 굴림 횟수를 나타내는 정수 n(65 ≤ n ≤ 195)이 있는 한 줄로 시작한다. 그다음 한 줄 이상에 걸쳐 n개의 주사위 굴림 값이 주어지며, 모두 1 이상 6 이하이다.

출력

주어진 주사위 굴림을 사용하여 13개 카테고리를 모두 채웠을 때 가능한 최대 순차 야추 점수를 출력한다. 모든 주사위 굴림을 사용할 필요는 없지만, 사용하는 굴림은 첫 번째 굴림부터 시작하는 연속된 굴림이어야 한다.

예제2

  1. 예제 1

    입력
    65
    1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1 1 1 1
    
    예상 출력
    70
    
  2. 예제 2

    입력
    76
    3 1 1 1 1 1 4 2 5 2 6 1 3 5 2 2 2
    3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6
    6 6 6 6 6 6 6 6 6 6 1 1 1 2 2 1 2 3 4 5
    1 2 3 4 5 1 1 6 1 6 6 6 6 1 1 1 1 1 4
    
    예상 출력
    340