문제 3772 · 바이트 IV
학원 상담 순서표
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 학원에서는 수업이 끝난 뒤 상담을 원하는 학생에게 번호표를 나누어 준다. 상담실 앞 전광판에는 아직 상담을 받지 않은 번호표가 대기 순서대로 표시된다. 직원은 학생의 도착, 잠시 자리 비움, 상담 호출을 기록한 명령을 순서대로 입력한다. 프로그램은 이 명령을 처리하며 실제 전광판에 남아 있을 대기 순서를 관리해야 한다. 처음에는 기다리는 번호표가 하나도 없다. 명령 ARRIVE x는 번호 x가 적힌 번호표 하나를 대기 순서의 맨 뒤에 추가한다. 번호표의 번호는 학생의 고유 식별자가 아니다. 서로 다른 학생이 같은 번호를 받을 수 있으므로, 이미 같은 번호가 대기 중이어도 새로운 번호표를 그대로 추가한다. 같은 번호가 여러 번 등장하더라도 각각 별개의 대기 항목으로 취급한다. 이 명령은 다른 번호표의 순서를 바꾸지 않는다. 명령 ROTATE는 가장 앞에서 기다리던 학생이 잠시 자리를 비웠음을 나타낸다. 대기 중인 번호표가 있다면 맨 앞 번호표 하나를 꺼내 맨 뒤에 다시 놓는다. 나머지 번호표의 상대적인 순서는 유지한다. 대기 중인 번호표가 하나뿐이면 결과적으로 순서가 바뀌지 않는다. 대기 중인 번호표가 전혀 없으면 아무 일도 하지 않는다. 이 명령은 번호표를 새로 만들거나 없애지 않는다. 명령 CALL은 다음 학생의 상담을 시작한다. 대기 중인 번호표가 있다면 맨 앞 번호표 하나를 꺼내 그 번호를 출력한다. 꺼낸 번호표는 이후 대기 순서에 남지 않는다. 대기 중인 번호표가 없다면 대신 0을 출력한다. 실제 번호표에는 0이 적히지 않으므로 이 출력으로 빈 대기 상태를 구별할 수 있다. 모든 명령은 입력에 적힌 순서대로 한 번씩 처리한다. 각 CALL의 처리 결과를 출력하고, 모든 명령을 처리한 뒤에는 아직 기다리는 번호표의 개수를 마지막 줄에 출력한다. 마지막 개수는 서로 다른 번호의 수가 아니라 대기 중인 번호표 전체의 수다.
입력
첫째 줄에 명령의 개수인 정수 N이 주어진다. 1≤N≤30,000이다. 다음 N개의 줄에 명령이 한 줄에 하나씩 주어진다. 각 명령은 ARRIVE x, ROTATE, CALL 중 하나다. ARRIVE의 x는 1≤x≤9,999인 정수다. CALL이나 ROTATE가 실행될 때 대기 중인 번호표가 없어도 유효한 입력이다.
출력
CALL 명령이 나올 때마다 호출한 번호표의 번호를 한 줄에 하나씩 출력한다. 대기 중인 번호표가 없었다면 0을 출력한다. 모든 명령을 처리한 뒤 대기 중인 번호표의 개수를 마지막 줄에 출력한다. CALL 명령이 한 번도 없다면 마지막 개수만 출력한다.
예제 입력 1
8 ARRIVE 12 ARRIVE 7 ROTATE CALL ARRIVE 12 CALL CALL CALL
예제 출력 1
7 12 12 0 0
예제 입력 2
5 ROTATE ARRIVE 8 ARRIVE 8 ROTATE ARRIVE 3
예제 출력 2
3
예제 입력 3
3 CALL ARRIVE 5 CALL
예제 출력 3
0 5 0
힌트 펼치기
- 맨 앞에서 번호표를 꺼내고 맨 뒤에 추가할 수 있는 자료구조를 사용한다.
- ROTATE와 CALL 모두 대기 중인 번호표가 없는 경우를 따로 처리한다.
관련 서재 장
알고리즘 분류
구현시뮬레이션큐풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |