1. 문제
https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
from collections import deque
# n : 수열 개수
n = int(input())
# nList : 수열 리스트
nList = deque()
for i in range(n):
nList.append(int(input()))
sequenceList = deque()
sequenceImpossible = False
output = ""
num = 1
for i in nList:
if num <= i:
for j in range(num, i):
sequenceList.append(j)
output += "+\n"
output += "+\n"
output += "-\n"
num = i + 1
else:
if len(sequenceList) == 0:
sequenceImpossible = True
break
for j in range(len(sequenceList)):
popNum = sequenceList.pop()
output += "-\n"
if popNum == i:
sequenceImpossible = False
break
else:
sequenceImpossible = True
if sequenceImpossible:
print("NO")
else:
print(output[:-1])