배구 통계
면접 대비시간 제한1초메모리 제한128 MB
배구 경기의 플레이 기록을 읽어 선수별, 팀별로 킬, 범실, 블록, 디그 통계를 집계하고 요청 시 정해진 형식으로 보고서를 출력한다.
문제
배구 경기의 플레이 기록을 한 줄씩 읽어, 한 팀에 대한 통계 보고서를 출력하는 프로그램을 작성한다.
프로그램은 각 줄이 하나의 플레이를 나타내는 입력을 순서대로 읽는다. 플레이 종류는 표 1과 같다.
표 1: 플레이
CHECKIN과 REPORT를 제외한 모든 플레이에는 정확히 하나의 두 자리 선수 번호가 붙는다. 선수 번호의 각 자리는 0에서 5 사이이므로, 심판이 양손의 손가락 0~5개로 표시할 수 있다.
각 보고서에서, 한 경기라도 참가한 모든 선수와 팀 전체에 대해 표 2의 통계를 계산한다.
표 2: 통계
유의 사항:
- 어떤 선수가 "경기에 참가"한다는 것은, 그 경기의 CHECKIN 줄에 그 선수가 등장하는 경우를 뜻한다. 플레이 기록이 하나도 없더라도 그 선수는 보고서에 그대로 나타나며, 이때 모든 통계는 0.000이다.
- 선수의 #Games는 그 선수가 참가한 경기 수(그 선수를 나열한 CHECKIN 줄의 개수)이다. 팀의 #Games는 해당 보고서 구간의 전체 경기 수이다. Hit %는 #Games에 의존하지 않는다.
- 선수에게 HIT, KILL, ERR가 하나도 없으면 그 선수의 Hit %는 0.000이다.
입력
각 입력 줄에는 정확히 하나의 플레이가 들어 있다. 1열에는 표 1의 플레이 키 중 하나가 온다.
- REPORT 줄에는 키
R만 있다. - CHECKIN 줄은 2열이 공백이고, 3~4열에 그 경기의 선수 수를 나타내는 두 자리 정수 NP(06 <= NP <= 15)가 온다. 그 뒤에는 NP개의 두 자리 선수 번호(앞자리 0 포함)가 각각 정확히 하나의 공백을 앞에 두고 이어진다. 한 경기의 어떤 플레이에도, 그 경기의 CHECKIN 줄에 없는 선수는 등장하지 않는다.
- HIT, KILL, ERR, BLOCK, DIG 줄은 2열이 공백이고, 3~4열에 정확히 하나의 두 자리 선수 번호(필요하면 앞자리 0 포함)가 온다.
출력
REPORT를 읽을 때마다 보고서를 출력한다.
모든 보고서의 첫 두 줄은 정확히 다음과 같다(둘째 줄은 하이픈 41개이다).
Player Hit Pct KPG BPG DPG
-----------------------------------------
그다음, 한 경기라도 참가한 각 선수에 대해 선수 번호 오름차순으로 한 줄씩 다음 형식으로 출력한다.
55 s0.000 99.999 99.999 99.999
s는 Hit %의 부호로, Hit %가 0.000 이상이면 +, 그렇지 않으면 -이다. 네 값 모두 소수점 아래 정확히 세 자리로 출력한다.
선수 줄들 다음에는, 같은 형식으로 team이라는 라벨을 사용해 팀 통계 한 줄을 출력한다.
team s0.000 99.999 99.999 99.999
칸 배치: 선수 번호(또는 라벨 team)는 8칸 폭에 왼쪽 정렬하고, 부호가 붙은 Hit %는 그다음 6칸을 차지하며, KPG, BPG, DPG는 각각 9칸 폭에 오른쪽 정렬한다. 어떤 통계의 절댓값도 99.999를 넘지 않는다.
연속한 두 보고서 사이에는 빈 줄을 정확히 하나 넣되, 마지막 보고서 뒤에는 빈 줄을 넣지 않는다.