deque와 heapq를 이용하였다.
1부터 n까지의 수를 만들어줘도 되지만
heapq를 이용하여 만들어져야 하는 수열을 입력받으면서 heapq에 넣으면서
바로바로 정렬을 빠르게 시켰다. (미리 1부터 n을 만들어두는 방식을 썼으면 더 효율적이었을듯함)
from collections import deque
import heapq
import sys
h = []
stack = deque()
arr = []
result = deque()
idx = 0
t = int(input())
for _ in range(t):
inn = int(sys.stdin.readline())
heapq.heappush(h,inn)
arr.append(inn)
while h or stack:
# print(stack)
if stack and stack[-1] == arr[idx]:
stack.pop()
idx += 1
result.append('-')
# print('-')
else:
inn = heapq.heappop(h)
stack.append(inn)
result.append('+')
# print('+')
if not h and stack and stack[-1] != arr[idx]:
result.append('NO')
print('NO')
break
if result[-1] != 'NO':
for i in range(len(result)):
print(result.popleft())
'백준' 카테고리의 다른 글
통계학 - 2108번 (0) | 2022.10.24 |
---|---|
블랙잭 - 2798번 (0) | 2022.10.22 |
별 찍기 - 19 - 10994번 (0) | 2022.10.17 |
별 찍기 - 23 - 13015번 (0) | 2022.10.17 |
보석 도둑 - 1202번 (0) | 2022.10.12 |
댓글