본문 바로가기

알고리즘/백준

[백준 1874][파이썬] 스택 수열

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

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

 

import sys

input = sys.stdin.readline

n = int(input())
stack = []
result = []
possible = True
push_num = 1

for i in range(n):
  num = int(input())
  
  while num >= push_num:
    stack.append(push_num)
    result.append('+')
    push_num += 1

  if stack[-1] == num:
    stack.pop()
    result.append('-')
  else:
    possible = False

if possible:
  for j in result:
    print(j)
else:
  print('NO')