아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

창 전환

면접 대비

시간 제한2초메모리 제한1024 MB

요약
실행 중인 응용 프로그램을 원형 리스트로 관리하며 새 응용 프로그램은 맨 앞에 추가하고 Alt+Tab마다 회전시켜, 활성화되는 창의 이름을 순서대로 출력한다.
난이도

보통10점 중 4점

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

문제

사용자가 Windows 운영 체제에서 작업할 때는 여러 응용 프로그램이 실행 중인 경우가 많다. 각 응용 프로그램은 별도의 창에서 실행된다. 창을 전환할 때는 <<Alt+Tab>> 조합을 사용한다. 이 조합은 현재 활성 창으로 오기 전에 사용자가 작업하던 창을 활성화한다.

다른 창으로 전환하려면 <<Alt>> 키를 누른 다음, 떼지 않은 채 <<Tab>> 키를 여러 번 누르면 된다. 이때 어떤 창이 활성화되는지 알아보기 위해 다음과 같은 모델을 사용하자. 응용 프로그램이 nn개 실행 중이라고 하자. 운영 체제에서 응용 프로그램은 목록 형태로 구성되며, 마지막으로 활성화된 시각이 늦은 순서대로 정렬된다. 즉, 현재 활성 창인 응용 프로그램이 목록의 첫 번째이고, 그 전에 활성화되었던 응용 프로그램이 두 번째이며, 이런 식으로 이어진다.

<<Alt>> 키를 누른 다음, 떼지 않은 채 <<Tab>> 키를 kk번 누르면, 목록에서 (k mod n)+1(k \bmod n) +1번째에 있는 응용 프로그램의 창이 활성화된다. 여기서 a mod ba \bmod b는 aa를 bb로 나눈 나머지를 뜻한다. 다시 말해 운영 체제는 목록을 순환하는 것으로 취급하여, 목록의 마지막 원소 다음에는 첫 번째 원소로 간다.

새 응용 프로그램을 실행하면 목록의 맨 앞에 추가된다.

사용자 동작의 순서가 주어지며, 각 동작은 응용 프로그램 실행이거나 창 전환이다. 사용자가 어떤 순서로 응용 프로그램을 사용했는지 출력하시오.

입력

첫째 줄에는 사용자 동작의 수 nn이 주어진다 (1≤n≤10001 \le n \le 1000). 다음 nn개 줄에는 사용자 동작의 설명이 주어진다.

응용 프로그램 실행은 <<Run <{\sl 응용 프로그램 이름}>\relax>> 문자열로 주어진다. 여기서 <<\relax<{\sl 응용 프로그램 이름}>\relax>>은 100자 이하의 라틴 문자, 숫자, 공백으로 이루어진 문자열이다. 이 문자열은 <<Run>>이라는 단어와 정확히 공백 하나로 구분된다. 모든 응용 프로그램 이름은 서로 다르다. 대문자와 소문자는 서로 다른 문자로 취급한다.

응용 프로그램 전환은 <<Alt+Tab+\dots+Tab>> 문자열로 주어진다. 여기서 <<+Tab>> 부분 문자열은 사용자가 <<Alt>> 키를 떼지 않은 채 <<Tab>> 키를 누른 횟수만큼 정확히 반복된다. 이 횟수는 100을 넘지 않는다.

입력 파일의 첫 번째 명령은 항상 <<Run>> 명령이다.

출력

출력 파일에 nn개 줄을 출력한다. 사용자가 작업한 응용 프로그램 이름을, 그 창이 활성화된 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    6
    Run Mozilla Firefox
    Run Free Pascal
    Alt+Tab
    Run Miranda IM
    Alt+Tab+Tab
    Alt+Tab+Tab+Tab
    
    예상 출력
    Mozilla Firefox
    Free Pascal
    Mozilla Firefox
    Miranda IM
    Free Pascal
    Free Pascal