Informatica Online Judge

  스택 순열 2 [2201 / 0899]

Time Limit(Test case) : 2000(ms)
Number of users who solved : 11   Total Tried : 28


The Champion of this Problem (C++) : gs15044 - 0ms / 308byte
My Best Submission (C++) : N/A

[JKJeong 2018]

Background

1부터 n까지의 숫자들을 각각 한 번씩 사용하여 만든 문자열이 주어진다.

예를 들어 n이 3이면 "123", "213", "321" 등이 될 수 있다.

이 문자열의 왼쪽부터 차례로 하나씩 스택을 이용하여 순서를 바꿀 수 있다.

우리가 목표로 하는 문자열은 1부터 n까지 순서대로 나열된 문자열을 만들고자 한다.

만약 n = 3이면 목표 문자열은 "123"이다.

입력이 "321"이라면 다음과 같은 과정으로 "123"을 만들 수 있다.

3 - "push"
2 - "push"
1 - "push"
pop
pop
pop

이와 같이 실행하면 "123"을 만들 수 있다.

길이 n과 숫자로 이루어진 문자열이 주어질 때 1부터 n까지 차례대로 이루어진 목표문자열을 만드는 과정을 출력하는 프로그램을 작성하시오.

Input

첫 번째 줄에 n이 입력된다.

다음 줄에 숫자로 구성된 문자열이 입력된다.

[입력값의 정의역]

1 <= n <= 9

Output

만약 만들 수 있으면 입출력 예시와 같이 출력하고, 만드는 것이 불가능 하다면 "-1"을 출력한다.

IO Example

입력
3
321

출력
push
push
push
pop
pop
pop

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]