https://www.acmicpc.net/problem/1874

import sys
input = sys.stdin.readline
n = int(input())
arr = [int(input()) for _ in range(n)]
stack = []
output = []
for i in range(1, n+1):
stack.append(i)
output.append("+")
while stack:
if stack[-1] == arr[0]:
stack.pop()
arr.pop(0)
output.append("-")
else:
break
if len(output) == 2 * n:
print("\n".join(output))
else:
print("NO")
arr: 입력한 수열stack: 스택output: 출력할 +, -가 순서대로 저장됨stack에 i를 push (output에 "+" 추가)stack에 값이 존재하면, stack의 마지막 원소와 arr의 첫번째 원소를 비교output에 "-" 추가output 검사output의 길이가 2*n이라면 정상이므로 output 출력직관적으로 이해가 되는 풀이는 아닌 것 같다.

import sys
input = sys.stdin.readline
n = int(input())
arr = [int(input()) for _ in range(n)]
stack = []
output = []
now = 1
possible = True
for num in arr:
while now <= num:
stack.append(now)
output.append("+")
now += 1
if stack and stack[-1] == num:
stack.pop()
output.append("-")
else:
possible = False
break
if possible:
print("\n".join(output))
else:
print("NO")