카테고리 없음

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

알 수 없는 사용자 2022. 7. 25. 17:06

1874번: 스택 수열 (acmicpc.net)

 

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

문제 분석

스택 구조로 자료를 저장하여 다시 꺼낸 수로 수열을 만들때 필요한 연산을 계산하는 문제이다.

소스 코드

n=int(input())
arr=[]
for i in range(n):
    a=int(input())
    arr.append(a)
stack=[]
s=[]
c=[]
t=1
for i in range(2*n):
    if stack==[]:
       stack.append(t)
       c.append("+")
       t+=1
    else:
        if stack[-1]==arr[0]:
            arr.pop(0)
            s.append(stack.pop())
            c.append("-")
        else:
            stack.append(t)
            c.append('+')
            t+=1

if len(s)!=n:
    print('NO')
else:
    print("\n".join(c))