[프로그래머스-Stack/Queue] 프린터

CHOI YUN HO·2021년 4월 16일
0

알고리즘 문제풀이

목록 보기
27/63

📃 문제 설명

프린터

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

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

문제에서 주어진 위 세 조건에 맞게,
큐를 이용하여 가장 앞에 있는 문서와 나머지 중요도를 비교해서 수행하면 된다.

큐에 원래 문서의 순서와 중요도를 같이 삽입하고 하나씩 꺼내서 큐에 남은 나머지 문서와 중요도를 비교한다.
꺼낸 문서보다 중요도가 높은게 하나도 없으면 인쇄한다.

이 떄 그냥 list를 사용해여 pop과 append를 하면 시간초과가 떠서
collectionsdeque 를 사용했다.

👨‍💻 소스 코드

from collections import deque

def solution(priorities, location):
    answer = 0
    queue = deque()

    for i in range(len(priorities)):
        queue.append((i, priorities[i]))

    while True:
        if queue[0][1] < max(priorities):
            temp = queue.popleft()
            queue.append(temp)
        else:
            answer += 1
            if queue[0][0] == location:
                break
            queue.popleft()
priorities.pop(priorities.index(max(priorities)))

    return answer
profile
가재같은 사람

0개의 댓글