아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

팀 큐

면접 대비

시간 제한1초메모리 제한128 MB

요약
새 원소가 같은 팀 원소 바로 뒤에 들어가고 없으면 맨 뒤에 붙는 팀 큐를 시뮬레이션하며, DEQUEUE마다 꺼낸 원소를 출력한다.
난이도

보통10점 중 5점

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

문제

큐(Queue)와 우선순위 큐(Priority Queue)는 대부분의 컴퓨터 과학자에게 익숙한 자료구조입니다. 하지만 팀 큐(Team Queue)는 일상에서 자주 볼 수 있음에도 상대적으로 덜 알려져 있습니다. 예를 들어 점심시간에 학생 식당 앞에 늘어선 줄이 바로 팀 큐입니다.

팀 큐에서는 각 원소가 하나의 팀에 속합니다. 새 원소가 큐에 들어올 때, 먼저 큐의 앞에서 뒤로 훑어보며 같은 팀의 원소(팀원)가 이미 큐에 있는지 확인합니다. 팀원이 있다면 그 팀원들의 바로 뒤에 들어갑니다. 팀원이 없다면 큐의 맨 뒤로 들어가 새로운 마지막 원소가 됩니다. 원소를 꺼내는 것(dequeue)은 일반 큐와 같아서, 팀 큐에 놓인 순서대로 앞에서부터 처리합니다.

이러한 팀 큐를 시뮬레이션하는 프로그램을 작성하세요.

입력

입력은 하나 이상의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 팀의 수 tt (1≤t≤10001 \le t \le 1000)로 시작합니다. 이어서 tt개의 팀 설명이 주어지며, 각 팀 설명은 그 팀에 속한 원소의 개수와 그 원소들로 이루어집니다. 원소는 00 이상 999999999999 이하의 정수이고, 한 팀은 최대 10001000개의 원소를 가질 수 있습니다.

그 다음에는 명령 목록이 이어집니다. 명령은 세 가지입니다.

  • ENQUEUE x — 원소 xx를 팀 큐에 넣습니다.
  • DEQUEUE — 맨 앞의 원소를 처리하여 큐에서 제거합니다.
  • STOP — 테스트 케이스의 끝을 나타냅니다.

tt의 값이 00이면 입력이 끝납니다.

주의: 한 테스트 케이스에는 최대 200000개의 명령이 포함될 수 있으므로, 넣기와 꺼내기가 모두 상수 시간에 이루어지도록 효율적으로 구현해야 합니다.

출력

각 테스트 케이스마다 먼저 Scenario #k 형식의 줄을 출력합니다. 여기서 kk는 테스트 케이스의 번호이며 11부터 시작합니다. 그런 다음 각 DEQUEUE 명령에 대해 꺼낸 원소를 한 줄에 하나씩 출력합니다. 서로 다른 테스트 케이스의 출력 사이에는 빈 줄 하나를 넣어 구분합니다.

예제1

  1. 예제 1

    입력
    2
    3 101 102 103
    3 201 202 203
    ENQUEUE 101
    ENQUEUE 201
    ENQUEUE 102
    ENQUEUE 202
    ENQUEUE 103
    ENQUEUE 203
    DEQUEUE
    DEQUEUE
    DEQUEUE
    DEQUEUE
    DEQUEUE
    DEQUEUE
    STOP
    2
    5 259001 259002 259003 259004 259005
    6 260001 260002 260003 260004 260005 260006
    ENQUEUE 259001
    ENQUEUE 260001
    ENQUEUE 259002
    ENQUEUE 259003
    ENQUEUE 259004
    ENQUEUE 259005
    DEQUEUE
    DEQUEUE
    ENQUEUE 260002
    ENQUEUE 260003
    DEQUEUE
    DEQUEUE
    DEQUEUE
    DEQUEUE
    STOP
    0
    
    예상 출력
    Scenario #1
    101
    102
    103
    201
    202
    203
    
    Scenario #2
    259001
    259002
    259003
    259004
    259005
    260001