[프로그래머스/파이썬] 힙 디스크 컨트롤러

bye9·2021년 2월 14일
0

알고리즘(코테)

목록 보기
63/130

https://programmers.co.kr/learn/courses/30/lessons/42627


알고리즘 분류

  • 우선순위큐

문제풀이

처리한 작업 수(count), 최근 작업이 끝난 시간(last), 작업시간(time)

우선순위 큐를 활용하였다. heap에 삽입할 때는 작업의 소요시간을 기준으로 최소힙이 될 수 있도록 하였다.

소스코드

def solution(jobs):
    import heapq
    heap=[]
    jobs.sort()
    count,last,result=0,-1,0
    time=jobs[0][0]
    while count<len(jobs):
        for i in jobs:
            s,t=i
            if last<s<=time:
                heapq.heappush(heap, (t,s))
        
        if len(heap)>0:
            count+=1
            value,start=heapq.heappop(heap)
            last=time
            time+=value
            result+=(time-start)
        else:
            time+=1
    return result//len(jobs)

0개의 댓글