문제 → 큐를 이용하여 프린터의 우선 순위를 이용하여 원하는 문서의 프린터 되는 순서를 구하는 문제
<방법>
1 큐를 이용하는 방법
- 문서의 개수와 원하는 문서의 현재 입력 위치, 우선 순위 리스트를 받는다.
- queue.PriorityQueue()를 이용하여 우선 순위가 높은 것들을 정렬하고, 원하는 위치에 있는 문서가 몇번째로 que.get() 되는지 구하는 방법
문제점 : 우선 순위가 낮은 것들은 모두 뒤로 이동 해야됨.... queue.PriorityQueue()는 우선 순위가 만약 같다면, 먼저 위치한 것이 앞에 위치 하도록 정렬됨 ... 따라서 이 방법은 우선순위가 높은 것이 먼저 나오나 같은 우선순위가 존재한다면 원하는 답을 찾을 수 없음
2 큐를 이용하는 방법
- 일단 먼저 큐에 전부 넣은 뒤, 만약 맨 앞의 문서의 우선 순위 보다 뒤 문서의 우선 순위가 높다면 que.put(que.get)을 이용하여 뒤로 보낸다.
- 큐의 정렬이 완료 되었으면, 원하는 문서 외에 다른 문서가 빠져 나오는 경우가 생겼을 때 마다 원하는 문서가 나오는 순서는 1씩 증가한다.
- 원하는 문서가 나오는 것은 다른 리스트를 이용하여 원하는 문서의 위치에는 1을 저장하고 나머지에는 모두 0을 저장한다. 우선순위의 큐가 정렬되는 과정에 있어서 이 리스트의 1위치도 바꾼다.