스택과 큐 기본 구조

관련 문제
- 탑
https://www.acmicpc.net/problem/2493
import sys
N = int(sys.stdin.readline())
top = list(map(int, sys.stdin.readline().split()))
stack = []
answer = []
for i in range(len(top)):
while stack:
if stack[-1][1] > top[i]:
answer.append(stack[-1][0] + 1)
break
else:
stack.pop()
if not stack:
answer.append(0)
stack.append([i, top[i]])
print(*answer)
- 크게 만들기
https://www.acmicpc.net/problem/2812
import sys
N, K = map(int, sys.stdin.readline().split())
tmp = sys.stdin.readline()
num = []
for i in range(N):
num.append(int(tmp[i]))
stack = []
cnt = K
for i in range(len(num)):
while stack and cnt > 0:
if stack[-1] >= num[i]:
break
else:
stack.pop()
cnt -= 1
stack.append(num[i])
for i in range(N-K):
print(stack[i], end = "")