본문 바로가기
알고리즘/백준

1874.스택 수열 python

by 1.5볼트 2023. 5. 5.
728x90

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

 

언제 한번 풀어본 거 같다

스택을 이용해서 주어진 수를 출력할 때 현재 스택의 마지막 값이  수가 아니면 그 수가 나올 때까지 리스트에서 추가한다 그래도 안 나오면 그 스택을 불가능한 출력 가능한 출력이라면 반복문이 끝나고 스택에 원소가 없어야 한다

 

n=int(input())
t=[]
t1=list(range(1,n+1))[::-1]
t2=[]
for i in range(n):
    t2.append(int(input()))
n1=0
t3=[]
while True:
    if t and t[-1]==t2[n1]:
        t.pop()
        t3.append("-")
        n1+=1
    elif t1:
        t.append(t1.pop())
        t3.append("+")
    else:
        break
    #print(t)
if not t:
    for i in t3:
        print(i)
else:
    print("NO")

'알고리즘 > 백준' 카테고리의 다른 글

11053.가장 긴 증가하는 부분 수열  (0) 2023.05.11
2606.바이러스 python  (0) 2023.05.06
1564.팩토리얼5 python  (0) 2023.05.04
14503.로봇 청소기 - python  (0) 2023.04.27
1016.제곱 ㄴㄴ 수 - python  (0) 2023.04.25

댓글