보물창고 블로그

프로그래머스 프린터 풀이 With Python 본문

알고리즘 풀이/프로그래머스

프로그래머스 프린터 풀이 With Python

홋 메 2020. 7. 9. 14:18
728x90

문제 링크:  https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

우선순위 큐를 구현하는 문제입니다. collection 모듈의 deque를 사용하여 해결하였습니다.

deque는 append, appendleft, pop, popleft 메서드를 갖고 있는데, 모두 시간 복잡도 O(1)입니다.  

소스코드는 아래와 같습니다. 

def solution(priorities, location):
    from collections import deque
    priorities = deque(priorities)
    idx = deque(range(len(priorities)))
    count = 0
    while 1:
        sub = priorities.popleft()
        nidx = idx.popleft()
        # 만약 priorities가 비어있다면 바로 count+1을 출력
        if not priorities:
            return count+1
        elif sub >= max(priorities):
            count += 1
            if nidx == location:
                return count
        else:
            priorities.append(sub)
            idx.append(nidx)

소스코드에 대한 질문이 있으시면 댓글 남겨주시면 답변드리겠습니다. :-)

Comments