https://programmers.co.kr/learn/courses/30/lessons/42627
import heapq
def solution(jobs):
answer = 0; now = 0; size = len(jobs); wait = []
heapq.heapify(jobs)
while(jobs or wait):
while(jobs and jobs[0][0] <= now):
start, time = heapq.heappop(jobs)
heapq.heappush(wait, [time, start])
if (wait):
time, start = heapq.heappop(wait)
else:
start, time = heapq.heappop(jobs)
now = start + time if (start > now) else now + time
answer += now - start
return answer // size
wait
는 현재 시간에서 가능한 일, answer
는 각 작업에서 요청부터 종료까지 걸린시간, now
는 현재 시간이다. jobs
를 힙화 시킨후 while문을 도는데 종료 조건은 wait
나 jobs
가 둘다 존재하지 않을때이다. jobs
에서 현재 가능한 일이 존재하면 wait
에 집어넣고 wait
가 존재하면 wait
에서 꺼내고 아니면 jobs
에서 꺼내 now
와 answer
를 계산하고 마지막에 answer
의 평균을 리턴