728x90
😄 아이디어
1. 매 ms를 반복문으로 구현 (최대값 1000 * 1000, 넉넉히 추가 부여)
2. 현재 시간에 작업이 들어오면 _!task!_변수에 보관
3. _!taskEndTime!_로 현재 작업여부 판단 👉 수행하는 작업이 없으면, _!tasks!_에서 가장 소모 값이 적은 작업수행
4. 추가될 작업 혹은 관리되는 작업이 없다면 종료
def solution(jobs):
length = len(jobs)
maxTime = 100_000_000
total = 0
tasks = []
taskEndTime = 0
for t in range(0, maxTime):
for index, job in reversed(list(enumerate(jobs))):
if t == job[0]:
tasks.append(jobs.pop(index))
optIndex = -1
optTime = 1001
for i, task in enumerate(tasks):
if optTime > task[1]:
optTime = task[1]
optIndex = i
if t >= taskEndTime and len(tasks) > 0:
taskEndTime = t + tasks[optIndex][1]
workTime = taskEndTime - tasks[optIndex][0]
total += workTime
del tasks[optIndex]
if len(jobs) == 0 and len(tasks) == 0:
break
return total // length
✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42627#