Koala - 9기/기초 알고리즘 스터디

[백준/Python] 1966번 : 프린터 큐

허수민 2023. 2. 10. 13:24

1966번: 프린터 큐 (acmicpc.net)

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

 

 

 

 

 

코드

코드 설명

  • n개 문서들의 중요도를 차례로 나열한 것을 큐인 dq에 받아 저장
  • dq를 복사한 큐 dqc 생성
  • 몇 번째로 출력되는지 궁금한 문서의 위치가 m이므로 dqc 큐에 있는 m위치에 있는 문서의 중요도를 -1로 변경
    • 중요도는 1이상 9이하 정수이고, max 함수를 사용할 것이기 때문에 중요도 변경 시 max 값에 걸리지 않기 위해 -1로 설정
    • 중요도가 같은 문서가 있을 수 있으므로 dqc의 중요도만 변경하고 dq는 유지해 올바른 순서를 판단
  • dq에 남아있는 문서가 없을 때까지 반복
    • dq의 맨 앞 문서의 중요도가 남아있는 문서들 중 제일 크다면 순서를 측정하는 count를 1증가
      1. 이때 dqc의 맨 앞 문서의 중요도가 -1이라면 우리가 찾던 그 문서이므로 count 값을 출력 후 반복문 종료
      2. 우리가 찾던 문서가 아니라면 dq와 dqc의 맨 앞 문서들 pop
    • dq의 맨 앞 문서의 중요도가 남아있는 문서들 중 제일 크지 않다면 pop하고 큐 dq와 dqc의 가장 마지막에 추가