시간의 흐름을 기준으로 작업마다 소요된 시간들을 더하는 방법을 생각해보았다.
첫번째 작업이 시작하는 시간과 첫번째 작업이 끝나는 시간 사이에 들어온 요청들을 우선순위큐에 넣는다.
작업이 실행되는 시간동안 들어온 요청들에 대해 현재 작업이 끝나는 시간까지 걸린 시간을 답에 더한다.
우선순위큐를 pop()하여 작업에 소요되는 시간이 가장 작은 작업을 얻는다.
우선순위큐에 들어온 작업들 개수만큼 위에서 얻은 작업의 시간을 답에 더한다.
현재 작업이 끝나는 시간과 방금 얻은 작업이 끝나는 시간 사이에 들어온 요청들을 우선순위큐에 넣는다.
작업이 실행되는 시간동안 들어온 요청들에 대해 현재 작업이 끝나는 시간까지 걸린 시간을 답에 더한다.
반복...
import heapq
def solution(jobs):
answer, now, last = 0, 0, -1
wait, n, count = [], len(jobs), 0
while count < n:
for job in jobs:
if last < job[0] <= now:
answer += (now - job[0])
heapq.heappush(wait, job[1])
if not wait:
now += 1
continue
t = heapq.heappop(wait)
answer += len(wait) * t
last = now
now += t
count += 1
return answer // n
'문제 풀이' 카테고리의 다른 글
[프로그래머스] 외벽 점검 / 2020 카카오 블라인드 채용 / python (0) | 2020.05.03 |
---|---|
[프로그래머스] 기둥과 보 설치 / 2020 카카오 블라인드 채용 / python (0) | 2020.05.03 |
[프로그래머스] 섬 연결하기 / python (0) | 2020.05.02 |
[프로그래머스] N으로 표현 / python (1) | 2020.05.02 |
[프로그래머스] [1차] 추석 트래픽 / 2018 카카오 블라인드 채용 / python (0) | 2020.05.01 |