문제 3799 · 바이트 III
양쪽 문이 있는 출고 통로
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
물류 창고에는 상자를 한 줄로 보관하는 임시 출고 통로가 있다. 통로의 왼쪽과 오른쪽에는 각각 문이 하나씩 있다. 작업자는 어느 문으로든 상자를 넣거나 꺼낼 수 있지만, 통로 가운데에 있는 상자를 직접 꺼내거나 상자의 순서를 바꿀 수는 없다. 처음에는 통로가 비어 있다. 각 상자에는 물품 종류를 나타내는 번호가 붙어 있다. 같은 종류의 상자가 여러 개 들어올 수 있으므로 번호가 같더라도 서로 다른 상자로 취급한다. 상자를 넣을 때는 선택한 문 바로 안쪽에 새 상자를 놓는다. 따라서 왼쪽으로 넣은 상자는 기존의 모든 상자보다 왼쪽에 놓이고, 오른쪽으로 넣은 상자는 기존의 모든 상자보다 오른쪽에 놓인다. 작업 기록은 네 가지 명령으로 이루어진다. L x는 번호가 x인 상자 하나를 왼쪽으로 넣는 명령이고, R x는 번호가 x인 상자 하나를 오른쪽으로 넣는 명령이다. F는 왼쪽 끝의 상자를 하나 꺼내는 명령이고, B는 오른쪽 끝의 상자를 하나 꺼내는 명령이다. 상자를 꺼낸 뒤에는 남은 상자들의 상대적인 순서가 유지된다. F 또는 B를 실행할 때 통로가 비어 있으면 아무 상자도 꺼내지 않는다. 이때도 해당 명령은 처리한 것으로 보며, 이후 명령은 정상적으로 이어서 실행한다. 상자가 한 개만 있을 때는 어느 쪽으로 꺼내더라도 그 상자가 통로에서 사라진다. 창고 관리자는 실제로 꺼낸 상자의 종류를 작업 순서대로 확인하려 한다. 모든 명령을 입력 순서대로 실행하고, F와 B가 등장할 때마다 꺼낸 상자의 번호를 기록한다. 꺼낼 상자가 없었던 경우에는 번호 대신 0을 기록한다. 상자를 넣는 명령에 대해서는 아무것도 기록하지 않는다.
입력
첫째 줄에 명령의 개수 Q가 주어진다. Q는 1 이상 50,000 이하의 정수다. 다음 Q개 줄에 명령이 하나씩 주어진다. 각 명령은 L x, R x, F, B 중 하나다. 상자 번호 x는 1 이상 9,999 이하의 정수다. F 또는 B 명령이 적어도 하나 주어진다.
출력
F 또는 B 명령마다 꺼낸 상자의 번호를 한 줄에 하나씩 출력한다. 해당 명령을 실행하기 직전에 통로가 비어 있었다면 0을 출력한다.
예제 입력 1
8 L 12 R 34 L 56 B F F B F
예제 출력 1
34 56 12 0 0
예제 입력 2
7 F R 7 L 7 B R 9 F B
예제 출력 2
0 7 7 9
힌트 펼치기
- 양쪽 끝에서 원소를 넣거나 꺼낼 수 있는 자료구조를 사용한다.
관련 서재 장
알고리즘 분류
덱시뮬레이션풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |