Informatica Online Judge

  체이서 [1574 / 0626]

Time Limit(Test case) : 1000 (ms)
Number of users who solved : 0   Total Tried : 6


The Champion of this Problem (C++) : N/A
My Best Submission (C++) : N/A

[koistudy.net (15026 김용근)]

Background

이 주사위 내기의 이름은 체이서(chaser)라고 한다(실제 존재하는 야찌(Yahtzee)라는 게임의 룰을 상황에 맞게 바꾼 게임으로, 작가가 창작한 실제로는 존재하지 않는 게임이다). 이 게임은 주사위가 5개 필요하며, 그 외에는 필기구와 점수를 기록하는 데 쓸 13칸짜리 표(점수 기록용 12칸+점수를 합산할 칸 1칸)가 한 사람당 하나씩만 있으면 된다.

우선 체이서의 족보는 다음과 같다.

1. 체이스 오프 (Chase Off)
5개의 주사위 모두 같은 눈이 나오는 케이스(예: 1, 1, 1, 1, 1).

2. 스트레이트 (Straight)
5개의 주사위가 1, 2, 3, 4, 5가 나오는 케이스. 물론 순서는 상관없다.

3. 이븐 스트레이트 (Even Straight)
5개의 주사위가 2, 3, 4, 5, 6이 나오는 케이스.

4. 포 다이스 (Four Dice)
5개의 주사위 중 4개의 주사위가 같은 눈이 나오는 케이스.(예: 4, 4, 4, 4, 5)

5. 풀 하우스 (Full House)
5개의 주사위 중 2개의 주사위의 눈이 같고, 또 나머지 3개의 주사위의 눈이 같은 케이스.(예: 3, 3, 3, 4, 4)

6. 초이스 (Choice)
5개의 주사위 중 2개의 주사위의 눈이 같고, 그 두 주사위를 제외한 나머지 3개 중 2개의 주사위의 눈이 같은 케이스. (예:1, 1, 2, 2, 5)

이 이상의 메이드(Made)는 조건이 맞지 않으면 0점으로 처리된다. 이 이하의 6개는 해당하는 숫자의 눈에 따라 숫자X나온 수(0~5)가 점수이다. 즉, 에이시즈는 최소 0점에서 최대 5점, 식스 빈즈는 최소 0점에서 최대 30점이다.

7. 에이시즈 (Aces)
8. 투 빈즈 (Two Beans)
9. 쓰리 빈즈 (Three Beans)
10. 포 빈즈 (Four Beans)
11. 파이브 빈즈 (Five Beans)
12. 식스 빈즈 (Six Beans)

규칙은 다음과 같다.

1. 플레이어의 차례가 되면 주사위들을 굴린다.
2. 주사위를 굴려서 나온 결과 중 원하는 주사위(들)를 한 번 다시 굴릴 수 있다. 물론 선택은 자유. 여기서 끝낸다면 4번으로.
3. 한 번 더 굴렸는데도 결과가 좋지 않으면 원하는 주사위(들)를 다시 굴릴 수 있다. 꼭 2번에서 다시 굴렸던 주사위가 아니더라도 상관없다.
4. 이렇게 나온 결과를 원하는 칸에 기록한다. 한 번에 한 칸만 사용 가능하다.(이를 1회의 "시도"라 하겠다)
4-1. 단 메이드의 경우 해당 조건이 맞아야만 점수로 기록되며 그렇지 않으면 0점으로 처리된다.
4-2. 체이스 오프는 50점, 스트레이트는 40점, 이븐 스트레이트는 30점이다.
4-3. 포 다이스, 풀 하우스, 초이스는 5개의 주사위의 눈의 합이 점수가 된다.
4-4. 식스 빈즈의 경우 6이 나온 주사위의 개수 곱하기 6을 점수로 기록한다. 파이브 빈즈의 경우는 5가 나온 주사위의 개수 곱하기 5, 포 빈즈의 경우는 4가 나온 주사위의 개수 곱하기 4, 이런 식이다.
4-5. 한 번 사용한 칸은 다시 기록할 수 없다.
4-6. 이렇게 기록된 점수의 합을 가지고 승패를 판단한다.

보리스는 친구를 살리기 위해 이 게임을 꼭 이겨야만 했다. 그래서 자신이 가지고 있던 환각 주사위의 힘을 사용하기로 마음먹었다. 이 환각 주사위의 힘을 사용하면 주사위를 딱 하나만 굴려 자신이 원하는 숫자가 나오게 할 수 있다. 이외의 사용 방법은 없기에, 보리스는 처음에는 그냥 던지고, 2번째와 3번째 주사위 굴리기에서는 주사위를 딱 하나만 굴려 자신이 원하는 숫자가 나오게 하기로 하였다. 물론 1번째나 2번째 굴리기에서 결과가 좋다면 주사위를 다시 굴리지 않고 그냥 넘어갈 수 있다.

게임은 각각 N번 진행되며, 각각 처음부터 K(<=12)번째 족보까지 K개의 족보을 사용하여 K번씩 시도한다.

게다가 또다른 도움이 들어왔다. 앞으로 있을 시도에서 처음에 나올 5개의 숫자들을 마검 윈터러가 미리 알려준 것이다.

보리스가 주어진 조건에서 얻을 수 있는 최대 점수는 얼마인지 계산해서 알려주도록 하자.

Input

먼저 진행될 게임의 갯수인 N이 입력된다.
그 후 N번에 걸쳐 시도의 수 K와, 윈터러가 알려준 주사위 결과가 K줄에 걸쳐 5개의 숫자로 각각 입력된다.

* N <= 20
* K <= 12

[Sub-Task Info]
#1 (50%) : K <= 10
#2 (50%) : 추가 제약 조건이 없음.

Output

보리스가 각각의 게임에서 얻을 수 있는 최대 점수를 출력하라.

IO Example

입력 1
1
2
1 1 1 1 1
1 2 3 1 1

출력 1
90

입력 1
2
6
1 5 6 2 1
5 4 2 6 3
4 5 2 5 2
1 6 2 5 6
1 6 4 6 2
1 4 4 3 2

7
1 5 6 6 6
1 5 4 2 3
1 6 2 4 4
1 5 2 5 3
6 2 5 3 3
1 5 5 2 4
1 6 4 2 3

출력 1
162
208

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]