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 |
댓글