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))