프로그래머스 : 코딩테스트 연습 - 힙(Heap) - 디스크 컨트롤러
Coding Test

프로그래머스 : 코딩테스트 연습 - 힙(Heap) - 디스크 컨트롤러

일시불

문제

  • 프로그래머스 : 코딩테스트 연습 - 힙(Heap) - 디스크 컨트롤러

풀이

못풀었다. 다른 분의 풀이를 참고했다 ㅠ 이 분이 제일 간결하게 짜셔서 모범 답안으로 올려놓음!

import heapq


def solution(jobs):
    start = -1
    end = 0
    waittime = 0

    howmanyjobs = len(jobs)
    pQ = []
    count = 0
    while(count < howmanyjobs):
        for job in jobs:
            # 현재 큐의 실행 중에 들어오는 요청만 처리
            if start < job[0] <= end:
                waittime += (end - job[0])
                heapq.heappush(pQ, job[1])

        if pQ:
            # 가장 짧은 수행시간의 큐를 먼저 실행
            # 나머지 큐는 그만큼 소요시간 증가
            waittime += len(pQ)*pQ[0]
            start = end
            end += heapq.heappop(pQ)

            count += 1
        else:
            # 실행 중 들어오는 요청이 없는 경우
            end += 1

    return waittime//(howmanyjobs) 

참고