레벨3 문제
힙
from collections import deque
import heapq
def solution(jobs):
n = len(jobs)
jobs.sort(key = lambda x:x[0])
jobs = deque(jobs)
request = []
time = [] # 각 작업의 소요시간을 모아놓은 리스트
sec = 0
while ( len(jobs) > 0 or len(request) > 0 ):
# 시간이 맞으면, request 리스트에 추가
while ( len(jobs) > 0 and jobs[0][0] <= sec ):
start, work = jobs.popleft()
heapq.heappush(request, [work, start])
# request 리스트에 무언가 들어있다면
if request:
# work : 작업의 소요시간, start : 작업이 요청되는 시점
work, start = heapq.heappop(request)
waiting_time = ( sec - start ) + work
sec += work
time.append(waiting_time)
# 작업이 없는 경우
else:
sec += 1
answer = sum(time) // n
return answer
시간 0부터 시작
시간이 흘러감에 따라 함수 진행 (while문 써야할듯)
요청 리스트가 텅 비면 함수 종료
해당 시간에 들어와있는 요청 리스트 필요 (queue)
소요시간 리스트 필요