# me
import sys
input=sys.stdin.readline
n=int(input())
nums=[int(input()) for i in range(n)]
turn=1
stack=[] # nums에 맞게 출력하기 위해 임시로 담아두는 곳. 순서대로 들어가야하기에 스택으로 구현
index=0
res=[] # NO일 때는 NO만 나와야 해서 결과는 한번에 출력해야 함
while turn<n+1: # 1-n까지 다 돌기 전까지 진행
if not stack or stack[-1] != nums[index]:
# 스택이 비었거나, 출력해야할 nums와 스택에 담겨있는 것과 맞지 않을때 스택에 넣기
# 스택[-1]인 이유는 순서대로 출력하도록 이번에 출력할 수 있는 순서를 지키기 위해서
stack.append(turn)
res.append('+')
turn+=1
if stack[-1]==nums[index]:
# 출력해야할 nums와 스택에 담겨있는 것이 맞을 때, 출력하고 index를 증가해 다음 nums를 가리킨다.
stack.pop()
res.append('-')
index+=1
if stack: # 모든 것을 다 돌고도 stack에 값이 남아있다면
for s in reversed(stack): # stack 맨 뒤부터 순서를 돌면서
if s != nums[index]: # 다음 nums와 맞지 않다면 NO를 출력하고, res를 비운다.
print('NO')
res.clear()
break
res.append('-') # 아니라면 res에 - 담기
index+=1
for r in res: # res가 있으면 순서대로 출력
print(r)
n = int(input())
s = []
op = []
count = 1
temp = True
for i in range(n):
num = int(input())
while count <= num:
s.append(count)
op.append('+')
count += 1
if s[-1] == num:
s.pop()
op.append('-')
else:
temp = False
if temp == False:
print('NO')
else:
for i in op:
print(i)
먼저 담고, 체크한다. 체크하면서 더이상 맞지 않는다면 bool 타입인 temp를 false로 바꾼다.
의문점
1. 순서가 맞지 않으면 무조건 false로 바뀌는 게 아닌가? 🤔