가보자구...
- 회전하는 큐
https://www.acmicpc.net/problem/1021
from collections import deque
n,m = map(int,input().split())
# deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 이런식으로 큐를 표현한다.
data = deque([i for i in range(1,n+1)])
#뽑아내려고 하는 수의 위치가 index변수에 순서대로 담아있다.
index = list(map(int,input().split()))
count = 0
for num in index:
while 1:
if data[0] == num:
data.popleft()
break
else:
if data.index(num) <= len(data)//2:
data.rotate(-1)
count += 1
else:
data.rotate(1)
count += 1
print(count)
- 크게 만들기
https://www.acmicpc.net/problem/2812
N, K = map(int, input().split())
num = list(input())
k, stack = K, []
for i in range(N):
while k > 0 and stack and stack[-1] < num[i]:
stack.pop()
k -= 1
stack.append(num[i])
print(''.join(stack[:N-K]))
- 프린터 큐
https://www.acmicpc.net/problem/1966
from collections import deque
num = int(input())
for i in range(num):
cnt = 0
N, M = map(int,input().split())
imp = deque(list(map(int,input().split())))
while len(imp) > 0:
maxi = max(imp)
if imp[0] == maxi: # 처음 원소값이 최댓값이면
imp.popleft()
if M == 0: # pop된 수가 목표 수이면
cnt += 1
break
else:
cnt += 1
M -= 1 # 한칸씩 당겨짐
else:
a = imp.popleft()
imp.append(a)
if M == 0:
M += len(imp) - 1 # 목표 수가 최대값이 아니면 맨 뒤로 넣어줌
else:
M -= 1
print(cnt)
- 오큰수
https://www.acmicpc.net/problem/17298
import sys
n = int(input())
A = list(map(int, sys.stdin.readline().split()))
answer = [-1] * n
stack = []
stack.append(0)
for i in range(1, n):
while stack and A[stack[-1]] < A[i]:
answer[stack.pop()] = A[i]
stack.append(i)
print(*answer)
- 나무조각
https://www.acmicpc.net/problem/2947
a = list(map(int, input().split()))
answer = [1, 2, 3, 4, 5]
while True:
for i in range(len(a)-1):
if a[i] > a[i+1]:
a[i], a[i+1] = a[i+1], a[i]
print(" ".join(map(str, a)))
if a == answer:
break