BNKQ

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

요약
하루치 은행 창구 대기 기록에서 각 창구가 처리한 고객 수와 가장 붐빈 한 시간 구간을 구한 뒤, 가장 바쁜 창구 세 곳을 출력한다.
난이도

보통10점 중 5점

유형
해시맵, 정렬, 구현, 누적 합
정답자
아직 제출이 없습니다

문제

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]에 처리되었다.

예제1

  1. 예제 1

    입력
    T01 CUST01 08:18:55AM
    T01 CUST03 08:20:00AM
    T01 CUST01 08:22:00AM
    T01 CUST02 08:20:23AM
    T01 CUST02 08:25:17AM
    T01 CUST03 08:27:50AM
    T01 CUST04 10:07:46AM
    T01 CUST04 10:19:21AM
    T02 CUST05 10:40:11AM
    T02 CUST06 10:40:18AM
    T02 CUST05 10:44:30AM
    T02 CUST06 10:46:44AM
    T03 CUST07 02:18:55PM
    T03 CUST08 02:19:00PM
    T03 CUST07 03:19:10PM
    T03 CUST08 03:21:27PM
    T03 CUST09 03:26:19PM
    T03 CUST09 03:29:59PM
    T04 CUST10 11:13:34AM
    T04 CUST10
    ENDOFINPUT
    
    예상 출력
    T01 4 08AM
    T03 3 03PM
    T02 2 10AM