알고리즘

[프로그래머스] 프린터 (파이썬)

김해리 2022. 4. 22. 18:07

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr


문제에서 요구하는 인쇄 작업을 그대로 구현합니다. 대기목록을 관리하기 위하여 deque를 사용하였습니다.

1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다.
2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.
3. 그렇지 않으면 J를 인쇄합니다.
from collections import deque


def solution(priorities, location):
    answer = 0
    priorities = deque([(i,x) for (i,x) in enumerate(priorities)])
    while priorities:
        cur = priorities.popleft()
        if any([True for i,x in priorities if x > cur[1]]):
            priorities.append(cur)
        else:
            answer += 1
            if cur[0] == location:
                break
    return answer
반응형