배구 점수 계산

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

요약
배구 터치 순서를 따라가며 점수를 계산하고, 잘못된 서브가 있으면 알린다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

배구는 1964년부터 올림픽 정식 종목이다. 6명씩으로 이루어진 두 팀(비치발리볼은 2명씩)이 공을 주고받는데, 각 팀은 공을 상대편으로 넘기기 전까지 최대 세 번만 공을 건드릴 수 있다. 같은 선수가 공을 연달아 두 번 건드리면 안 된다는 규칙처럼 조건이 더 붙기 때문에 점수를 세기가 번거롭다. 점수를 대신 세는 프로그램을 작성하자.

이 문제에서 쓰는 규칙은 다음과 같다. 두 팀은 각각 6명으로 이루어진다. 1번부터 6번까지가 A팀 선수이고, 7번부터 12번까지가 B팀 선수이다. 두 팀은 번갈아 서브를 넣는다. 즉 어떤 랠리에서 서브를 넣는 팀은 직전 랠리에서 서브를 넣지 않은 팀이다. 첫 랠리는 어느 팀이 서브를 넣어도 된다.

자기 팀에 다음 중 하나가 일어나면 상대 팀이 그 점수를 가져간다.

  1. 자기 팀 선수 한 명이 공을 연달아 두 번 건드린다.
  2. 자기 팀 선수가 공을 연달아 네 번 이상 건드린다.
  3. 공이 자기 팀 코트 바닥에 닿는다.
  4. 공이 코트 밖 바닥에 닿았고, 그 직전에 공을 마지막으로 건드린 선수가 자기 팀 선수이다.
  5. 자기 팀 선수가 서브를 넣은 직후에 자기 팀 선수가 공을 건드린다.

점수가 나면 랠리가 끝나고, 기록에서 그다음 차례는 새 랠리의 서브이다.

공을 건드린 순서가 주어질 때 현재 점수를 구하자. 서브도 공을 건드린 것으로 센다. 도중에 서브를 넣을 차례가 아닌 팀이 서브를 넣었다면 점수 대신 그 사실을 출력한다.

여기서는 네트의 영향을 무시하고, 서브를 넣는 선수가 보통 로테이션을 돈다는 점을 비롯한 몇 가지 세부 사항도 무시한다.

입력

첫째 줄에 파일에 들어 있는 데이터 세트의 개수 KK (K≥1K \ge 1)가 주어진다. 이어서 데이터 세트가 KK개 주어지며, 각 데이터 세트의 형식은 다음과 같다.

데이터 세트의 첫째 줄에 정수 tt (1≤t≤10001 \le t \le 1000)가 주어진다. 둘째 줄에 공을 건드린 기록 tt개가 공백 한 칸으로 구분되어 주어진다.

  • 정수 ii (1≤i≤121 \le i \le 12)는 ii번 선수가 공을 건드렸다는 뜻이다. 이 기록이 서브일 수도 있다.
  • 문자 A와 B는 공이 각각 A팀 코트 바닥과 B팀 코트 바닥에 닿았다는 뜻이다.
  • 문자 X는 공이 코트 밖 바닥에 닿았다는 뜻이다.

각 데이터 세트의 첫 기록은 항상 정수이며, 처음 서브를 넣은 선수를 나타낸다. 기록이 끝나는 시점에 랠리가 진행 중일 수도 있다. 서브를 넣을 차례가 아닌 팀이 서브를 넣는 경우를 빼면, 불가능한 기록은 주어지지 않는다.

출력

각 데이터 세트마다 먼저 "Data Set x:"를 한 줄에 출력한다. x는 1부터 세는 데이터 세트의 번호이다. 다음 줄에 A팀의 점수와 B팀의 점수를 공백 한 칸으로 구분해 출력한다. 기록 도중 서브를 넣을 차례가 아닌 팀이 서브를 넣었다면, 점수 대신 "Wrong Serve"를 출력한다. 이웃한 두 데이터 세트 사이에는 빈 줄을 한 줄 출력한다.

예제9

  1. 예제 1

    입력
    2
    21
    1 X 9 A 3 7 7 7 3 4 5 B 2 8 11 10 3 4 9 B 12
    7
    1 X 9 A 8 X 7
    
    예상 출력
    Data Set 1:
    3 2
    
    Data Set 2:
    Wrong Serve
    
  2. 예제 2

    입력
    1
    1
    5
    
    예상 출력
    Data Set 1:
    0 0
    
  3. 예제 3

    입력
    1
    4
    1 8 8 7
    
    예상 출력
    Data Set 1:
    1 0
    
  4. 예제 4

    입력
    1
    5
    1 7 8 9 10
    
    예상 출력
    Data Set 1:
    1 0
    
  5. 예제 5

    입력
    1
    2
    1 2
    
    예상 출력
    Data Set 1:
    0 1
    
  6. 예제 6

    입력
    2
    3
    1 7 A
    4
    1 8 9 B
    
    예상 출력
    Data Set 1:
    0 1
    
    Data Set 2:
    1 0
    
  7. 예제 7

    입력
    1
    3
    7 1 X
    
    예상 출력
    Data Set 1:
    0 1
    
  8. 예제 8

    입력
    1
    4
    1 7 A 2
    
    예상 출력
    Data Set 1:
    Wrong Serve
    
  9. 예제 9

    입력
    3
    2
    1 7
    6
    7 X 1 2 8 9
    3
    12 6 6
    
    예상 출력
    Data Set 1:
    0 0
    
    Data Set 2:
    2 1
    
    Data Set 3:
    0 1