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

정민·2022년 4월 7일
0
post-custom-banner

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

처음 든 생각

  1. 매 반복문마다 jobs 배열을 돌면서 현재의 시간을 알려주는 time 보다 이전에 요청되어진 작업이 있는지 검사한다.
  2. 있다면 해당 작업을 heapq인 q에 넣어준다. 첫번째 요소를 job[1] 해줌으로써 소요시간이 우선이 되게 해준다.
  3. q에 들어가진 상태대로 작업을 수행한다.

성공 코드

import heapq
def solution(jobs):

    timeList=[]
    q=[]
    time=0
    start=-1
    complete=0 #완료된 작업의 수
    jobs.sort()
    
    while complete<len(jobs): 
        for job in jobs[complete:]:
            if start<job[0]<=time:
                heapq.heappush(q,(job[1],job[0]))
        if q:
            work=heapq.heappop(q)
            start=time
            time+=work[0]
            timeList.append(time-work[1])
            complete+=1
        else: #요청된 작업이 없을 경우 넘어간다.
            time+=1

    return int(sum(timeList)/len(timeList))
profile
괴발개발~
post-custom-banner

0개의 댓글