pop이랑 push를 써서 수열을 만들어라는 알겠는데 모르겠어서 차근차근 정리해보았다.
1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라.
from collections import deque
import sys
input = sys.stdin.readline
stack = deque()
log = []
n = 1
flag = 0
S = [ int(input()) for _ in range(int(input())) ]
for x in S:
while n <= x:
stack.append(n)
log.append('+')
n += 1
if stack[-1] == x:
stack.pop()
log.append('-')
else:
print("NO")
flag = 1
break
if not flag:
for x in log:
print(x)