반응형
문제 출처
Northwestern European Regional Contest NWERC 2006 F번
문제 주소
1966번: 프린터 큐
문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료��
www.acmicpc.net
알고리즘
큐
문제풀이
큐 구현부
class ArrayQueue:
def __init__(self):
self.data = []
def size(self):
return len(self.data)
def isEmpty(self):
return self.size()==0
def enqueue(self, item):
self.data.append(item)
def dequeue(self):
if self.isEmpty():
print("빈 큐임")
else:
return self.data.pop(0)
def peek(self):
if self.isEmpty():
print("빈 큐임")
else:
return self.data[0]
입력값들을 모두 큐에 넣은 뒤 우선 순위대로 정렬한 리스트를 만들어 우선순위대로 출력한다. 입력값을 큐에 넣을 때 위치와 함께 튜플로 넣어주어 원래 있던 위치가 어디였는지 알 수 있게 해준다.
n = int(input())
for i in range(n):
q = ArrayQueue()
m,k=input().split(" ")
m=int(m)
k=int(k)
tmp=input().split(" ")
tmp=list(map(int, tmp))
p=sorted(tmp)
p.reverse()
for i in range(len(tmp)) :
q.enqueue((i,tmp[i]))
i=1
while not q.isEmpty():
d=q.dequeue()
if d[1] < p[i-1]:
q.enqueue(d)
else :
if d[0] == k :
print(i)
break
i+=1
반응형
'Problem Solve > Queue' 카테고리의 다른 글
[백준] 13335번 트럭 (Python) (0) | 2020.05.22 |
---|