📖 스택/큐 > 프로세스

📖What I thought

  1. 우선순위 + FIFO니까 priority queue를 쓰면 되지 않을까?
    • 파이썬에서 우선순위 큐는 heapq 모듈을 사용하는데 이건 최소힙으로 구현되어 있어서 순서 유지가 안 돼 → 같은 우선순위를 가지고 있을 시 문제가 발생함
  2. 그렇다면 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

📖What I learned

  1. any와 같은 필터를 잘 사용하면 코드가 훨씬 깔끔해짐
  2. heapq 모듈은 최소힙 구현 → 순서유지 X

📖관련 지식

📎Queue

📎all & any

📎lambda