병훈1234 2021. 6. 23. 11:19

- 우선순위를 저장해둘 prior_copy를 만들어 둔 다음에 오름차순으로 정렬을 시킨다.

- 즉, prior_copy의 마지막 요소가 출력되어야 하는 요소의 우선순위

- queue를 돌면서 우선순위가 가장 높으면 출력하고, 아니라면 큐의 마지막에 넣어야 한다, 하지만 우선순위가 같은 케이스도 있으므로 우선순위와 인덱스를 같이 queue에 넣어둔다.

- 우선순위가 가장 높은걸 출력하되, 문제의 location을 프린터가 출력할 때, 해당 location이 몇번째로 출력되는지 나타내면 된다.

import copy
from collections import deque

def solution(priorities, location):
    prior_copy = copy.deepcopy(priorities)
    prior_copy.sort()
    queue = deque()
    for i, pr in enumerate(priorities):
        queue.append([pr, i]) # 우선순위랑 해당 인덱스 같이 삽입
    answer = 0

    while queue:
        pr, idx = queue.popleft()
        if pr == prior_copy[-1]:
            answer += 1
            if idx == location:
                break
            prior_copy.pop()
        else:
            queue.append([pr, idx])

    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges