728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/42627
📌 문제 접근 방법
- 최소힙을 사용해서 풀이했다.
- jobs의 첫 번째 원소가 현재 시간보다 작거나 같다면 ready에 push해준다.
이 때, (소요 시간, 요청 시점) 순으로 튜플을 만들어서 ready가 소요 시간을 기준으로 최소값을 찾을 수 있도록 해준다. - 만약 ready에 대기하고 있는 작업이 있다면 해당 작업의 소요 시간만큼 time을 늘리고 작업의 대기시간을 answer에 더해준다.
- ready에 대기하고 있는 작업이 없다면 시간만 1 늘려준다. (이 부분을 놓쳐서 계속 시간초과가 났다.)
📌 코드
import heapq
def solution(jobs):
N = len(jobs)
heapq.heapify(jobs)
time = 0
answer = 0
ready = []
while jobs or ready:
while jobs and jobs[0][0] <= time:
temp = heapq.heappop(jobs)
heapq.heappush(ready, (temp[1], temp[0]))
if ready:
use, request = heapq.heappop(ready)
time += use
answer += time - request
else:
time += 1
return answer//N
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 베스트앨범 (0) | 2021.12.29 |
---|---|
[PG/Python] 표 편집 (0) | 2021.12.27 |
[PG/Python] 야근 지수 (0) | 2021.12.22 |
[PG/Python] N으로 표현 (0) | 2021.12.22 |
[PG/Python] 단어 변환 (0) | 2021.12.22 |
댓글