문제 3942 · 바이트 IV
배달 주문 상태판
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 배달 앱은 매장에서 보낸 주문 처리 명령을 받아 상태판을 갱신한다. 통신 지연으로 같은 명령이 반복되거나 현재 상태와 맞지 않는 명령이 도착할 수 있으므로, 정해진 조건을 만족하는 명령만 반영해야 한다. 상태판은 처음에 비어 있으며 모든 명령은 입력에 주어진 순서대로 하나씩 처리한다. 주문 번호는 현재 진행 중인 주문을 구분한다. 진행 중인 주문은 접수 상태 또는 준비 완료 상태 중 하나다. 명령 A x는 주문 번호 x를 새로 접수한다. 현재 진행 중인 주문 중 번호가 x인 주문이 없을 때만 접수 상태로 추가하며, 이미 같은 번호가 있으면 아무 일도 하지 않는다. 기존 주문이 준비 완료 상태여도 중복 접수 명령으로 상태를 되돌리지 않는다. 명령 R x는 번호 x인 주문의 준비가 끝났음을 뜻한다. 해당 주문이 접수 상태일 때만 준비 완료 상태로 바꾼다. 명령 D x는 배달 기사에게 주문을 인계하는 명령이다. 해당 주문이 준비 완료 상태일 때만 인계에 성공하며, 성공한 주문은 상태판에서 제거한다. 접수 상태인 주문은 바로 인계할 수 없다. 명령 C x는 주문을 취소한다. 해당 주문이 접수 상태일 때만 취소에 성공하고 상태판에서 제거한다. 준비 완료 상태인 주문은 취소할 수 없다. 존재하지 않는 번호에 대한 R, D, C 명령은 모두 무시한다. 이미 준비 완료 상태인 주문에 대한 R 명령도 아무 변화가 없다. 인계나 취소로 제거된 주문 번호는 이후 A 명령으로 다시 사용할 수 있다. 다시 접수된 주문은 이전 주문과 별개의 주문이며, 처음부터 접수 상태로 시작한다. 같은 번호로 인계나 취소에 여러 번 성공할 수도 있다. 모든 명령을 처리한 뒤 인계 성공 횟수, 취소 성공 횟수, 상태판에 남은 주문 수를 구한다. 무시한 명령은 성공 횟수에 포함하지 않는다.
입력
첫째 줄에 명령 수 N이 주어진다. N은 정수이며 1 ≤ N ≤ 20,000이다. 다음 N개 줄에 명령 문자와 주문 번호 x가 공백으로 구분되어 주어진다. 명령 문자는 A, R, D, C 중 하나이며, x는 1 ≤ x ≤ 9,999인 정수다.
출력
인계 성공 횟수, 취소 성공 횟수, 모든 명령 처리 후 남은 주문 수를 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 성공한 인계나 취소가 없으면 해당 횟수는 0으로 출력하며, 남은 주문이 없으면 마지막 값은 0으로 출력한다.
예제 입력 1
12 A 7 D 7 R 7 C 7 D 7 A 7 C 7 A 3 A 3 R 3 R 9 D 9
예제 출력 1
1 1 1
예제 입력 2
6 C 1 A 1 R 1 D 1 A 1 C 1
예제 출력 2
1 1 0
예제 입력 3
1 D 9999
예제 출력 3
0 0 0
힌트 펼치기
- 각 주문 번호에 대해 없음, 접수, 준비 완료의 세 상태를 관리한다.
- 명령이 요구하는 현재 상태와 실제 상태가 일치할 때만 갱신한다.
관련 서재 장
알고리즘 분류
구현시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |