본문 바로가기

코딩

[Python] 백준 #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

 

# 1874 - Python 3

import sys
from collections import deque

input = sys.stdin.readline

s = deque()
answer = []

flag = 0
count = 1

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

    while count <= num:             # count가 num을 만날 때 까지 push 진행
        s.append(count)
        answer.append("+")
        count += 1

    if s[-1] == num:                # s의 마지막 요소가 num인 경우
        answer.append("-")
        s.pop()
    else:                           # s의 마지막 요소가 num이 아닌 경우
        flag = 1                    # 오류, 수열 만들 수 없음
        break

if flag == 1:
    print("NO")
else:
    for i in answer:
        print(i)