시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
스택은 마지막에 넣은 값이 가장 먼저 나오는 LIFO(Last In, First Out) 자료구조이다. 값은 스택에 넣는 push 연산과 스택에서 빼는 pop 연산으로 다룬다.
1부터 n까지의 수를 반드시 오름차순으로만 push할 수 있다고 하자. push와 pop을 적절히 수행하면 하나의 수열을 만들 수 있다. 주어진 수열을 스택으로 만들 수 있는지 판단하고, 가능하다면 필요한 연산 순서를 출력하는 프로그램을 작성하라.
첫째 줄에 정수 n이 주어진다. (1 <= n <= 100,000)
둘째 줄부터 n개의 줄에는 만들고 싶은 수열의 원소가 순서대로 하나씩 주어진다. 각 원소는 1 이상 n 이하의 정수이며, 같은 정수는 두 번 나오지 않는다.
주어진 수열을 만들 수 있다면 필요한 연산을 한 줄에 하나씩 출력한다. push 연산은 +, pop 연산은 -로 출력한다.
수열을 만들 수 없다면 NO를 출력한다.
1부터 8까지의 수에 대해 push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop 순서로 연산하면 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.