문제 : 

 

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

 

Solution

import sys
from collections import deque
dq=deque()
op=deque()

N=int(input())
x=int(input())

for i in range(1,x+1):
    dq.append(i)
    op.append('+')

maxx=dq[-1]
dq.pop()
op.append('-')

for i in range(N-1):
    x=int(input())
    while x>maxx:
        maxx+=1
        dq.append(maxx)
        op.append('+')
    if len(dq)==0:
            print("NO")
            sys.exit(0)
    while x<dq[-1]:   
        dq.pop()
        op.append('-')    
    dq.pop()
    op.append('-')

for x in op:
    print(x)

자기 자신도 빼주는게 중요하당

 

 

1년 전 C++로 풀었을 땐 틀렸는데 올해 파이썬 시작하고 다시 풀어보니 맞았다,,8ㅅ8

 

꾸준히 공부하니 조금씩 성장하는게 느껴진다 무야호 ~

반응형

+ Recent posts