본문 바로가기

개발/algorithm

[백준 1874번] 스택 수열 - python

문제 링크

 

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

풀이

- stack에 입력한 수를 만날 때까지 push 

- stack에서 pop 할 숫자가 입력한 숫자가 아니면 수열을 만들 수 없다 

n = int(input())

i = 1
stack =[]
answer = []
result = True

for _ in range(n):
  num = int(input())

  while i <= num:
    stack.append(i)
    answer.append('+')
    i += 1
  
  if stack[-1] == num:
    stack.pop()
    answer.append('-')
  else:
    result = False

if result :
  for k in answer:
    print(k)
else:
  print('NO')