낭만 IT

반응형

문제 출처

Northwestern European Regional Contest NWERC 2006 F번

 

문제 주소

백준 1966번 프린터 큐

 

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

백준 1966번 프린터 큐

반응형

'Problem Solve > Queue' 카테고리의 다른 글

[백준] 13335번 트럭 (Python)  (0) 2020.05.22

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band