배구 점수 계산
시간 제한2초메모리 제한512 MB
배구 터치 순서를 따라가며 점수를 계산하고, 잘못된 서브가 있으면 알린다.
문제
배구는 1964년부터 올림픽 정식 종목이다. 6명씩으로 이루어진 두 팀(비치발리볼은 2명씩)이 공을 주고받는데, 각 팀은 공을 상대편으로 넘기기 전까지 최대 세 번만 공을 건드릴 수 있다. 같은 선수가 공을 연달아 두 번 건드리면 안 된다는 규칙처럼 조건이 더 붙기 때문에 점수를 세기가 번거롭다. 점수를 대신 세는 프로그램을 작성하자.
이 문제에서 쓰는 규칙은 다음과 같다. 두 팀은 각각 6명으로 이루어진다. 1번부터 6번까지가 A팀 선수이고, 7번부터 12번까지가 B팀 선수이다. 두 팀은 번갈아 서브를 넣는다. 즉 어떤 랠리에서 서브를 넣는 팀은 직전 랠리에서 서브를 넣지 않은 팀이다. 첫 랠리는 어느 팀이 서브를 넣어도 된다.
자기 팀에 다음 중 하나가 일어나면 상대 팀이 그 점수를 가져간다.
- 자기 팀 선수 한 명이 공을 연달아 두 번 건드린다.
- 자기 팀 선수가 공을 연달아 네 번 이상 건드린다.
- 공이 자기 팀 코트 바닥에 닿는다.
- 공이 코트 밖 바닥에 닿았고, 그 직전에 공을 마지막으로 건드린 선수가 자기 팀 선수이다.
- 자기 팀 선수가 서브를 넣은 직후에 자기 팀 선수가 공을 건드린다.
점수가 나면 랠리가 끝나고, 기록에서 그다음 차례는 새 랠리의 서브이다.
공을 건드린 순서가 주어질 때 현재 점수를 구하자. 서브도 공을 건드린 것으로 센다. 도중에 서브를 넣을 차례가 아닌 팀이 서브를 넣었다면 점수 대신 그 사실을 출력한다.
여기서는 네트의 영향을 무시하고, 서브를 넣는 선수가 보통 로테이션을 돈다는 점을 비롯한 몇 가지 세부 사항도 무시한다.
입력
첫째 줄에 파일에 들어 있는 데이터 세트의 개수 ()가 주어진다. 이어서 데이터 세트가 개 주어지며, 각 데이터 세트의 형식은 다음과 같다.
데이터 세트의 첫째 줄에 정수 ()가 주어진다. 둘째 줄에 공을 건드린 기록 개가 공백 한 칸으로 구분되어 주어진다.
- 정수 ()는 번 선수가 공을 건드렸다는 뜻이다. 이 기록이 서브일 수도 있다.
- 문자 A와 B는 공이 각각 A팀 코트 바닥과 B팀 코트 바닥에 닿았다는 뜻이다.
- 문자 X는 공이 코트 밖 바닥에 닿았다는 뜻이다.
각 데이터 세트의 첫 기록은 항상 정수이며, 처음 서브를 넣은 선수를 나타낸다. 기록이 끝나는 시점에 랠리가 진행 중일 수도 있다. 서브를 넣을 차례가 아닌 팀이 서브를 넣는 경우를 빼면, 불가능한 기록은 주어지지 않는다.
출력
각 데이터 세트마다 먼저 "Data Set x:"를 한 줄에 출력한다. x는 1부터 세는 데이터 세트의 번호이다. 다음 줄에 A팀의 점수와 B팀의 점수를 공백 한 칸으로 구분해 출력한다. 기록 도중 서브를 넣을 차례가 아닌 팀이 서브를 넣었다면, 점수 대신 "Wrong Serve"를 출력한다. 이웃한 두 데이터 세트 사이에는 빈 줄을 한 줄 출력한다.