코딩테스트/자료구조(스택,큐,해시,힙)

[큐/힙] (프로그래머스_42587) 프로세스 - 파이썬

영최 2024. 9. 5. 15:19
728x90

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

순서가 첫번째부터임 리스트 0번으로 return하면 당연히 틀림 

최대 힙임 (최소힙으로 습관적으로 쓰지 말것)

✅ 가장 우선 순위가 높은 프로세스를 찾을 때 max() 나 any()를 쓰는 거 보단 힙을 사용하는게 더 빠름

 

  최신 풀이: 큐+힙 사용(더 빠름) 이전 풀이: 큐+any사용
시간

 

✅ 최신 풀이: 큐+힙 사용

from collections import deque
from heapq import heappush,heappop
def solution(priorities, location):
    q = deque()
    hq = []
    for i,p in enumerate(priorities):
        q.append((p,i))
        heappush(hq,(-p,i))
    answer = []
    while q:
        if q[0][0]!=-hq[0][0]:
            while q[0][0]!=-hq[0][0]:
                cur = q.popleft()
                q.append(cur)
        else:
            cur = q.popleft()
            heappop(hq)
            answer.append(cur[1])

    return answer.index(location)+1

 

✅ 이전 풀이: 큐+any사용

from collections import deque
def solution(priorities, location):
    queue = deque()
    answer = 0
    for i,p in enumerate(priorities):
        queue.append((i,p))
    
    
    while True:
        cur = queue.popleft()
        if any(cur[1]<q[1] for q in queue):
            queue.append(cur)
        else:
            answer+=1
            if cur[0]==location:
                break
    return answer
728x90