처음엔 문제를 아예 이해 못했다..
문제를 해석해보자면
입력된 수열 X = [4, 3, 6, 8, 7, 5, 2, 1] 이 있고
스택 Y에 1부터 순서대로 넣었다가 뒤에서부터 빼서 X 수열을 만들 수 있는지를 물어보는 거였다
push 한 번 하면 Y = [1], 두 번 하면 Y = [1, 2] 처럼 되고
출력된 예시처럼 push를 4번 한 이후에는 Y = [1, 2, 3, 4]가 되고,
다섯번째 출력처럼 pop을 하면 X[0]과 같은 값이 나온다
이런 식으로 push, pop 하면서 X[N]까지 하면 되는 것,,
import sys
N = int(sys.stdin.readline())
X = []
# 입력 받아서 리스트에 저장
for i in range(N):
X.append(int(sys.stdin.readline()))
Y = []
Z = [i for i in range(1, N + 1)]
out = [] # 출력할 +, - 기호 저장할 리스트
A = True
i = 0
while i != len(X): # i == len(X) 가 되면 끝내기
if len(Y) == 0: # Y에 아무것도 없다면 push
if len(Z) != 0: # Z에 남은 데이터 가져오기
Y.append(Z[0])
del Z[0]
out.append('+')
else: # Z에 남은 데이터가 없다면 끝내기
break
elif X[i] == Y[-1]: # Y의 마지막 데이터가 X의 i번째와 같다면 pop
Y.pop()
out.append('-')
i += 1
else:
if X[i] < Y[-1]:
A = False
i = len(X)
break
else:
if len(Z) != 0:
Y.append(Z[0])
del Z[0]
out.append('+')
else:
out.append('+')
if not A:
print('NO')
else:
for i in range(len(out)):
print(out[i])