문제 4920 · 킬로 V
지원 요청 되돌리기
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
사내 IT 지원팀은 점검 중 발견한 요청을 임시 작업 목록에 쌓아 둔다. 요청에는 문제의 종류를 나타내는 정수 분류 번호가 붙어 있다. 같은 종류의 문제가 여러 번 발생할 수 있으므로, 분류 번호가 같은 요청도 서로 다른 요청으로 목록에 들어간다. 처음에는 목록이 비어 있다. 지원팀은 기록된 명령을 주어진 순서대로 실행하며 목록의 상태를 확인하려 한다. 명령은 등록, 취소, 확인의 세 종류다. 등록 명령 `A x`는 분류 번호가 x인 요청 하나를 목록의 맨 위에 추가한다. 취소 명령 `B k`는 현재 목록의 맨 위에서부터 요청을 최대 k개 제거한다. 현재 요청이 k개보다 적으면 남아 있는 요청을 모두 제거한다. 제거된 요청은 이후 명령에 영향을 주지 않으며, 취소 명령 자체를 되돌리는 기능은 없다. k가 0이면 목록은 변하지 않는다. 확인 명령 `Q`를 실행하면 현재 요청의 총개수, 현재 목록에 존재하는 서로 다른 분류 번호의 개수, 맨 위 요청의 분류 번호를 차례대로 보고한다. 목록이 비어 있으면 세 값은 모두 0이다. 분류 번호는 항상 양의 정수이므로, 빈 목록을 뜻하는 0과 실제 요청의 번호가 혼동되는 경우는 없다. 예를 들어 같은 분류 번호의 요청 두 개를 연속으로 등록하면 요청의 총개수는 두 개 늘지만 서로 다른 분류 번호의 개수는 한 개만 늘어난다. 그중 하나만 취소하면 해당 분류 번호는 여전히 목록에 존재한다. 취소 명령은 분류 번호의 크기나 등록 횟수가 아니라 오직 등록된 순서에 따라 요청을 제거한다. 모든 명령을 처리하면서 각 확인 명령이 요구하는 세 값을 출력해야 한다.
입력
첫째 줄에 명령의 개수 N이 주어진다. 다음 N개 줄에 명령이 한 줄에 하나씩 주어진다. 명령의 형식은 `A x`, `B k`, `Q` 중 하나다. 모든 수는 정수이며 1≤N≤20000, 1≤x≤1000000000, 0≤k≤20000이다. 확인 명령은 적어도 하나 주어진다.
출력
각 `Q` 명령마다 요청의 총개수, 서로 다른 분류 번호의 개수, 맨 위 요청의 분류 번호를 공백으로 구분하여 한 줄에 출력한다. 목록이 비어 있으면 `0 0 0`을 출력한다.
예제 입력 1
10 Q A 7 A 7 A 3 Q B 2 Q B 9 B 0 Q
예제 출력 1
0 0 0 3 2 3 1 1 7 0 0 0
예제 입력 2
7 A 12 B 0 Q A 4 B 1 A 12 Q
예제 출력 2
1 1 12 2 1 12
힌트 펼치기
- 요청을 제거할 때 같은 분류 번호의 요청이 몇 개 남았는지도 관리한다.
관련 서재 장
알고리즘 분류
구현스택해시풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |