소 줄 세우기

면접 대비

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

요약
왼쪽과 오른쪽 끝에서 소를 넣고 여러 마리를 한꺼번에 빼는 연산을 처리한 뒤, 남은 소를 왼쪽부터 순서대로 출력한다.
난이도

보통10점 중 4점

유형
큐, 연결 리스트, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Farmer John의 소들이 한 줄로 서 있습니다. 줄은 처음에 비어 있고, 시간이 지나면서 소들이 한 마리씩 줄의 왼쪽 끝 또는 오른쪽 끝에 합류합니다. 또한 때때로 줄의 왼쪽 끝 또는 오른쪽 끝에 있는 KK마리의 소가 한꺼번에 줄을 떠나 풀을 뜯으러 갑니다.

소들은 번호 순서대로(1,2,3,…1, 2, 3, \dots) 줄에 들어옵니다. 즉, 소가 합류할 때마다 아직 사용되지 않은 가장 작은 번호가 그 소에게 배정됩니다. 한 번 줄을 떠난 소는 다시 들어오지 않습니다.

총 SS개의 연산이 주어집니다(1≤S≤100,0001 \le S \le 100{,}000). 각 연산은 다음 두 종류 중 하나입니다.

  • 소 한 마리가 줄의 왼쪽 끝 또는 오른쪽 끝에 합류한다.
  • 줄의 왼쪽 끝 또는 오른쪽 끝에서 KK마리의 소가 떠난다.

입력은 수행할 수 없는 연산(예: 줄에 있는 소보다 많은 수의 소를 떠나보내는 연산)을 절대로 요구하지 않습니다.

모든 연산을 처리한 뒤, 줄에 남아 있는 소들의 번호를 왼쪽에서 오른쪽 순서로 출력하세요. 마지막 상태의 줄은 비어 있지 않음이 보장됩니다.

입력

  • 첫째 줄: 정수 SS.
  • 둘째 줄부터 S+1S+1째 줄까지: 각 줄에 하나의 연산이 다음 네 가지 형식 중 하나로 주어집니다.
    • A L — 소 한 마리가 줄의 왼쪽 끝에 합류한다.
    • A R — 소 한 마리가 줄의 오른쪽 끝에 합류한다.
    • D L K — 왼쪽 끝에서 KK마리의 소가 떠난다.
    • D R K — 오른쪽 끝에서 KK마리의 소가 떠난다.

출력

줄에 남아 있는 소들의 번호를 왼쪽에서 오른쪽 순서로, 한 줄에 한 번호씩 출력하세요.

힌트

아래 표는 10개의 연산으로 이루어진 예시에서 각 연산이 줄을 어떻게 변화시키는지 보여 줍니다.

연산연산 후 줄 (왼쪽 → 오른쪽)
A L1
A L2 1
A R2 1 3
A L4 2 1 3
D R 24 2
A R4 2 5
A R4 2 5 6
D L 12 5 6
A L7 2 5 6
A R7 2 5 6 8

예제7

  1. 예제 1

    입력
    10
    A L
    A L
    A R
    A L
    D R 2
    A R
    A R
    D L 1
    A L
    A R
    
    예상 출력
    7
    2
    5
    6
    8
    
  2. 예제 2

    입력
    1
    A L
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1
    A R
    
    예상 출력
    1
    
  4. 예제 4

    입력
    3
    A L
    A L
    A L
    
    예상 출력
    3
    2
    1
    
  5. 예제 5

    입력
    3
    A R
    A R
    A R
    
    예상 출력
    1
    2
    3
    
  6. 예제 6

    입력
    5
    A R
    A R
    A R
    A R
    D L 2
    
    예상 출력
    3
    4
    
  7. 예제 7

    입력
    5
    A R
    A R
    A R
    A R
    D R 3
    
    예상 출력
    1