Coding Test/백준
[백준 1874번] 스택 수열
Lucian_Cho
2021. 1. 5. 02:12
# 문제
내 풀이
from collections import deque
n = int(input())
nums = deque([int(input()) for _ in range(n)]) # 주어진 수열을 큐 형태로 사용
stack = []
result = []
# 스택에 1 ~ n까지의 수를 오름차순으로 삽입
for i in range(1, n + 1):
stack.append(i)
result.append('+')
# nums와 stack에 원소가 있고, nums의 첫번째 값이 stack의 최상단 값과 같다면
while nums and stack and nums[0] == stack[-1]:
stack.pop() # 스택의 최상단 값 제거
nums.popleft() # 큐의 맨 앞에 있는 값 제거
result.append('-')
# nums에 원소가 남아 있다면 'NO'를 출력
if nums:
print("NO")
# nums가 비어있다면 result의 연산자들을 모두 출력
else:
for i in result:
print(i)