코딩테스트

[Python] 프로그래머스 / 디스크 컨트롤러

LOEWEN 2024. 10. 3. 21:02
728x90

문제 링크

 

여기서 힌트 안 보여줬으면 좋겠다...

두 개의 queue를 관리하라

하라는 대로 하면 되지만, 생각보다 까다롭고 섬세한 문제이다. 이게 또 은근히 실전 코테에서는 어려운 요소이다.

import heapq
from collections import deque

def solution(jobs):
    n = len(jobs)
    jobs.sort()
    jobs = deque(jobs)
    
    total_time, current_time = 0, 0
    queue = []
    
    while jobs or queue :
        while jobs and jobs[0][0] <= current_time :
            requested, duration = jobs.popleft()
            heapq.heappush(queue, [duration, requested])
            
        if queue :
            current_duration, current_requested = heapq.heappop(queue)
            current_time += current_duration
            total_time += current_time - current_requested
        
        else :
            current_time = jobs[0][0]
    
    return total_time//n