#1966 프린터 큐

princess·2021년 1월 12일
0

알고리즘

목록 보기
4/21

문제 → 큐를 이용하여 프린터의 우선 순위를 이용하여 원하는 문서의 프린터 되는 순서를 구하는 문제

<방법>

1 큐를 이용하는 방법

  • 문서의 개수와 원하는 문서의 현재 입력 위치, 우선 순위 리스트를 받는다.
  • queue.PriorityQueue()를 이용하여 우선 순위가 높은 것들을 정렬하고, 원하는 위치에 있는 문서가 몇번째로 que.get() 되는지 구하는 방법

문제점 : 우선 순위가 낮은 것들은 모두 뒤로 이동 해야됨.... queue.PriorityQueue()는 우선 순위가 만약 같다면, 먼저 위치한 것이 앞에 위치 하도록 정렬됨 ... 따라서 이 방법은 우선순위가 높은 것이 먼저 나오나 같은 우선순위가 존재한다면 원하는 답을 찾을 수 없음

2 큐를 이용하는 방법

  • 일단 먼저 큐에 전부 넣은 뒤, 만약 맨 앞의 문서의 우선 순위 보다 뒤 문서의 우선 순위가 높다면 que.put(que.get)을 이용하여 뒤로 보낸다.
  • 큐의 정렬이 완료 되었으면, 원하는 문서 외에 다른 문서가 빠져 나오는 경우가 생겼을 때 마다 원하는 문서가 나오는 순서는 1씩 증가한다.
  • 원하는 문서가 나오는 것은 다른 리스트를 이용하여 원하는 문서의 위치에는 1을 저장하고 나머지에는 모두 0을 저장한다. 우선순위의 큐가 정렬되는 과정에 있어서 이 리스트의 1위치도 바꾼다.
profile
성장하는 머신러닝 엔지니어

0개의 댓글