파이썬에서 우선순위 큐는 heapq 모듈을 사용하는데 이건 최소힙으로 구현되어 있어서 순서 유지가 안 돼 → 같은 우선순위를 가지고 있을 시 문제가 발생함
그렇다면 FIFO 형태인 queue를 사용해서 우선순위가 아닐 시에는 다시 push해주는 형식으로 만들어보자
첫번째 원소를 pop
나머지 원소들 중 하나라도 우선순위가 더 크면 다시 push
내가 우선순위 대빵이면 cnt++ (이 때, loc == idx라면 cnt return)
📖풀이
📎Queue
def solution(priorities, location): queue = [(p, i) for i, p in enumerate(priorities)] cnt = 0 while queue: now = queue.pop(0) if any(now[0] < q[0] for q in queue): queue.append((now)) else: cnt += 1 if now[1] == location: return cnt