RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01564

브라우저 탭 전환

Silver IV 실버 IV
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

웹 브라우저는 여러 개의 을 한 줄로 늘어놓고 관리한다. 항상 최소 한 개의 탭이 열려 있으며, 그중 정확히 하나의 탭에 초점(focus) 이 맞춰져 있다.

탭에는 만들어진 순서대로 번호가 붙는다. 가장 처음 열려 있는 탭의 번호는 \(1\) 이고, \(k\) 번째로 새로 만들어진 탭의 번호는 \(k\) 이다. 처음에는 번호 \(1\) 인 탭 하나만 열려 있고, 그 탭에 초점이 맞춰져 있다.

브라우저는 다음 세 가지 명령을 순서대로 처리한다.

  • OPEN : 현재 초점이 맞춰진 탭의 바로 오른쪽에 새 탭을 하나 연다. 새 탭은 아직 사용되지 않은 가장 작은 번호를 받으며, 새로 연 탭으로 초점이 옮겨간다.
  • CLOSE : 현재 초점이 맞춰진 탭을 닫는다. 닫은 뒤에는 그 오른쪽에 있던 탭으로 초점이 옮겨간다. 만약 닫은 탭이 가장 오른쪽 탭이었다면, 대신 그 왼쪽에 있던 탭으로 초점이 옮겨간다. 탭이 하나만 남아 있을 때 CLOSE 명령이 주어지는 경우는 없다.
  • TAB : (Ctrl+Tab) 현재 초점이 맞춰진 탭의 바로 오른쪽 탭으로 초점을 옮긴다. 현재 초점이 가장 오른쪽 탭에 있다면, 초점은 가장 왼쪽 탭으로 순환하여 옮겨간다.

모든 명령을 처리한 뒤, 왼쪽에서 오른쪽 순서대로 탭들의 번호를 출력하고 어느 탭에 초점이 맞춰져 있는지 표시하여라.

제약

\(0 \le M \le 200{,}000\)

각 명령은 OPEN, CLOSE, TAB 중 하나이다.

탭이 하나만 남아 있을 때 CLOSE 명령이 주어지는 경우는 없다.

입력 형식

첫째 줄에 명령의 개수 \(M\) (\(0 \le M \le 200{,}000\)) 이 주어진다.

다음 \(M\) 개의 줄에 각각 명령이 하나씩 주어진다. 각 명령은 OPEN, CLOSE, TAB 중 하나이다.

탭이 하나만 남아 있을 때 CLOSE 명령이 주어지는 경우는 없다.

출력 형식

한 줄에, 모든 명령을 처리한 뒤 남아 있는 탭들의 번호를 왼쪽에서 오른쪽 순서대로 공백으로 구분하여 출력한다. 단, 초점이 맞춰진 탭의 번호는 대괄호로 감싸 [번호] 형태로 출력한다.

예제 1
입력
5
OPEN
OPEN
TAB
OPEN
CLOSE
출력
1 [2] 3
설명

[1]
OPEN → 1 [2]
OPEN → 1 2 [3]
TAB → [1] 2 3 (가장 오른쪽이었으므로 가장 왼쪽으로 순환)
OPEN → 1 [4] 2 3
CLOSE → 1 [2] 3 (오른쪽 탭으로 초점 이동)

예제 2
입력
2
OPEN
CLOSE
출력
[1]
설명

[1]
OPEN → 1 [2]
CLOSE → [1] (가장 오른쪽 탭을 닫았으므로 초점이 왼쪽으로 이동)

문제 정보

riseoj 작성

출처 Original

평가 및 의견

브라우저 탭 전환

개요
출제자 난이도 Silver IV 실버 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

브라우저 탭 전환

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8