Computer Science/백준
백준 1966번 프린터 큐
Dior2ky
2021. 8. 11. 16:07
반응형
백준 1966번 문제


제목에서도 알 수 있듯이 큐와 관련된 문제이다.
기본적인 큐의 push와 pop을 구현하면 되지만 이 문제에서는 중요도를 두어 중요도가 높은 문서가 큐에 있으면 맨 뒤로 보내기 때문에 pop을 한 뒤 다시 push를 해주면 될 것으로 보인다.
구현한 코드이다.
obj = int(input())
for i in range(obj):
count = 0
n, x = input().split()
n = int(n)
x = int(x)
arr = input().split()
for j in range(n):
arr[j] = int(arr[j])
while True:
flag = 0
for j in range(len(arr)):
if arr[0] < arr[j]:
flag = 1
if flag == 1:
arr.append(arr[0])
del arr[0]
if x == 0:
x = len(arr) - 1
else:
x -= 1
else:
count += 1
del arr[0]
if x == 0:
break
else:
x -= 1
print(count)
원하는 문서의 위치인 x값의 변화를 통해 계속 따라가 주는 것이 가장 중요한 부분이었다.
기본적인 큐의 구현에 x값의 변화, 중요도가 더 높은 문서가 있다면 문서를 뒤로 돌리는 부분 세가지를 생각하여 구현하면
쉽게 풀린다.

성공!
반응형