다트 점수 계산

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

다트는 다트판에 다트를 던지는 경기입니다. 다트판은 1번부터 20번까지 번호가 매겨진 20개의 구역으로 나뉩니다. 각 구역에는 싱글(single), 더블(double), 트리플(triple) 득점 영역이 있어, 예를 들어 5번 구역에 맞으면 다트가 꽂힌 영역에 따라 5점, 10점, 15점을 얻습니다. 다트판 중앙에는 두 개의 동심원이 있는데, 안쪽의 불즈아이(bull's eye)는 50점, 바깥쪽의 아우터 불(outer bull)은 25점입니다.

301 게임은 두 선수가 번갈아 가며 다트 세 개씩을 던지는 방식으로 진행됩니다. 두 선수 모두 301점에서 시작하며, 점수는 0을 향해 줄어듭니다.

득점 시작. 각 선수의 점수는 그 선수가 처음으로 더블을 맞히기 전까지는 계산되지 않습니다(불즈아이도 더블로 칩니다). 첫 더블을 맞히기 전에 던진 다트는 모두 0점으로 처리됩니다.

턴에서의 점수 차감. 한 턴에서 선수는 최대 세 개의 다트를 던집니다. 점수로 인정되는 각 다트의 값은 던진 순서대로 하나씩, 턴을 시작할 때의 점수에서 차감됩니다.

종료와 버스트(bust). 이기려면 더블에 해당하는 다트로 점수를 정확히 0으로 만들어야 합니다. 진행 중 점수가 2 미만으로 떨어지는 순간 그 턴은 즉시 끝나며 더 이상 다트를 던지지 않습니다. 턴이 끝날 때:

  • 점수가 정확히 0이고 마지막 다트가 더블이었다면 그 선수가 이기고 게임이 끝납니다.
  • 그렇지 않으면 버스트로, 그 턴은 무효가 되고 점수는 턴을 시작할 때의 값으로 되돌아갑니다.

예를 들어 턴을 시작할 때 점수가 10이라고 합시다. 이때는 더블 5를 노려 게임을 끝내야 합니다. 만약 트리플 3(9점), 싱글 9, 싱글 10, 또는 10보다 큰 값을 던지면 진행 점수가 각각 1, 더블이 아닌 0, 음수가 되어 모두 2 미만이 되므로 턴이 끝나고 점수는 10으로 유지됩니다. 그보다 작은 값을 던지면 그 값은 일단 차감되고, 여전히 더블로 마무리하려 시도하며 계속 던집니다. 성공하면 이기고, 성공하지 못한 채 점수가 2 미만으로 떨어지면 턴이 끝나며 점수는 다시 10으로 돌아갑니다.

라운드는 첫 번째 선수가 한 턴을 던지고 이어서 두 번째 선수가 한 턴을 던지는 것으로 이루어집니다. 이러한 게임들의 점수를 계산하는 프로그램을 작성하세요.

입력

입력은 여러 게임의 정보로 이루어집니다. 각 게임은 한 줄 이상에 걸친 다트 던지기의 나열입니다. 게임의 마지막 줄을 제외한 모든 줄에는 정확히 10개의 던지기가 들어 있으며, 각 던지기는 지정자 뒤에 쉼표가 붙는 형태입니다. 던지기 지정자는 다음 중 하나입니다.

  • S, D, T 뒤에 1부터 20까지의 숫자 — 해당 구역의 싱글, 더블, 트리플.
  • 불즈아이를 뜻하는 B, 또는 아우터 불을 뜻하는 OB.
  • 다트가 빗나간 경우(0점)를 뜻하는 M.
  • 게임의 끝을 나타내는 #.

전체 게임들의 나열은 # 하나만 있는 줄로 끝납니다.

출력

각 게임마다 여러 줄을 출력합니다. 첫 줄은 단어 Game, 공백 하나, 그리고 게임 번호(1부터 시작하는 일련번호)입니다. 그다음에는 라운드마다 한 줄씩, 그 라운드가 끝난 시점의 두 점수를 출력합니다. 게임은 비어 있는 0번째 라운드에서 시작한다고 보므로, 첫 점수 줄은 항상 301 301입니다.

각 점수는 너비 5의 칸에 오른쪽 정렬로 출력하며, 왼쪽 칸은 첫 번째 선수, 오른쪽 칸은 두 번째 선수의 점수입니다. 마지막 줄에서는 이긴 선수의 칸에 단어 Wins를 너비 5 칸에 오른쪽 정렬로 출력하고, 진 선수의 칸에는 그 점수를 출력합니다. 이어지는 게임들은 빈 줄 하나로 구분합니다.