본문 바로가기

백준 문제 풀이

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

 

알고리즘

 1부터 n까지 순회하면서 입력 값과 일치하는경우 push, 일치하지 않는 경우 pop을 실행하고 실행 연산의 결과를 배열에 저장한다.

 

소스코드

# 스택 수열
import sys
n = int(sys.stdin.readline())
arr = [int(sys.stdin.readline()) for _ in range(n)]

idx = 0
stack1 = []
stack2 = []
cal = []
for i in range(1, n+1):
    stack1.append(i)
    cal.append('+')
    while stack1 and stack1[-1] == arr[idx]:
        stack2.append(stack1.pop())
        cal.append('-')
        idx += 1

if stack2 == arr:
    for i in cal:
        print(i)
else:
    print("NO")