카테고리 없음

(Python)백준 코딩테스트 연습 - 스택 수열(1874)

HRuler 2023. 5. 14. 14:31

1. 문제

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

2. 풀이

import sys
input = sys.stdin.readline
from collections import deque

# n : 수열 개수
n = int(input())

# nList : 수열 리스트
nList = deque()
for i in range(n):
    nList.append(int(input()))

sequenceList = deque()
sequenceImpossible = False
output = ""
num = 1
for i in nList:
    if num <= i:
        for j in range(num, i):
            sequenceList.append(j)
            output += "+\n"
        output += "+\n"
        output += "-\n"
        num = i + 1
    else:
        if len(sequenceList) == 0:
            sequenceImpossible = True
            break
        for j in range(len(sequenceList)):
            popNum = sequenceList.pop()
            output += "-\n"
            if popNum == i:
                sequenceImpossible = False
                break
            else:
                sequenceImpossible = True

if sequenceImpossible:
    print("NO")
else:
    print(output[:-1])