BNKQ
시간 제한2초메모리 제한512 MB
하루치 은행 창구 대기 기록에서 각 창구가 처리한 고객 수와 가장 붐빈 한 시간 구간을 구한 뒤, 가장 바쁜 창구 세 곳을 출력한다.
문제
Nili 은행은 전국 고객에게 은행 서비스를 제공한다. 각 지점에는 여러 명의 창구 직원이 있어 고객의 예금과 출금 업무를 처리한다. 각 창구 직원은 예금이나 출금을 위해 기다리는 고객의 대기열을 가진다. 은행은 고객, 고객이 대기열에 선(또는 처리된) 시각, 창구 직원 정보를 기록한다.
은행은 이 기록을 바탕으로 어느 창구 직원이 가장 바빴는지, 그리고 그 직원의 하루 중 최고 혼잡 시간대가 언제인지 알고 싶어 한다.
하루치 기록을 입력받아 가장 바쁜 창구 직원 세 명과 각자의 최고 혼잡 시간대를 출력하는 프로그램을 작성하시오.
입력
처음 N개의 줄(N < 10000)에 하루치 기록이 주어진다.
- 기록 형식: TELLERCUSTOMER[TIME]
- TELLER는 창구 직원 id
- CUSTOMER는 고객 id
- TIME은 고객이 대기열에 선 시각 또는 창구 직원에게 처리된 시각 (08:00:00AM - 04:00:00PM 사이)
- 같은 기록의 첫 번째 등장은 고객이 대기열에 선 시각, 두 번째 등장은 고객이 처리된 시각이다
- 고객이 처리되지 않고 대기열을 떠나면 기록에 [TIME]이 없다. 입력은 ENDOFINPUT 줄로 끝난다. 이 줄은 입력의 일부가 아니다.
출력
가장 바쁜 창구 직원 세 명, 각자가 하루에 처리한 고객 수, 최고 혼잡 시간대(시 단위)를 한 줄에 한 명씩 출력한다.
-
형식: TELLERPROCESSED-COUNTPEAK-TIMEFRAME
-
바쁜 창구 직원이란 대기열에 고객을 많이 둔 사람이 아니라 고객을 많이 처리한 사람이다.
-
최고 혼잡 시간대가 여러 개면 08:00:00AM에 가장 가까운 첫 번째 시간대를 출력한다.
-
처리한 고객 수가 같은 창구 직원이 둘 이상이면 이름 오름차순으로 정렬한다.
-
TIMEFRAME은 길이 1시간이다. 예: 08:00AM - 04:00PM 사이에는 08AM, 09AM, 10AM, ..., 02PM, 03PM의 8개 시간대가 있다
-
시간대의 범위는 예를 들어 다음과 같다:
- 08:00:00AM <= 08AM 시간대 < 09:00:00AM
- 03:00:00PM <= 03PM 시간대 < 04:00:00PM
-
힌트
이 경우 창구 직원은 네 명, 고객은 열 명이다.
- 창구 직원 01은 고객 4명을 처리했다. 그중 세 명은 08AM 시간대에, 한 명은 10AM 시간대에 처리했다.
- 창구 직원 02는 고객 2명을 처리했다. 둘 다 10AM 시간대에 처리했다.
- 창구 직원 03은 고객 3명을 처리했다. 한 명은 02PM 시간대에, 나머지 두 명은 03PM 시간대에 처리했다.
- 창구 직원 04는 대기열에 고객이 한 명 있었지만 그 고객은 대기열을 떠났다.
따라서 가장 많은 고객을 처리한 창구 직원은 4명을 처리한 T01이고, 두 번째로 바쁜 창구 직원은 3명을 처리한 T03, 그다음은 2명을 처리한 T02이다.
고객 01(CUST01)은 [T01 CUST01 08:18:55AM]에 창구 직원 01(T01)의 대기열에 서고, [T01 CUST01 08:22:00AM]에 처리되었다.