728x90
https://programmers.co.kr/learn/courses/30/lessons/42627
from heapq import heappush, heappop
def solution(jobs):
# jobs가 정렬이 안되어있음
jobs.sort(key=lambda x: (x[0], x[1]))
# 0 변수 선언
min_h = []
jobs_idx = 0
cur = 0
s, rt = None, None
running = False
answer_list = []
# 1 디스크 컨트롤러 with min_HEAP
while jobs_idx < len(jobs) or min_h or running:
if running:
answer_list.append((rt + cur - s))
cur += rt
running = False
else: # disk is not running
while jobs_idx < len(jobs) and cur >= jobs[jobs_idx][0]:
heappush(min_h, (jobs[jobs_idx][1], jobs[jobs_idx][0]))
jobs_idx += 1
if min_h:
rt, s = heappop(min_h)
running = True
else:
cur += 1
# 2 정답 출력
answer = sum(answer_list) // len(answer_list)
return answer
if __name__ == '__main__':
print(solution( [[0, 3], [1, 9], [2, 6]]))
시뮬레이션으로 하면 시간초과가 날거같아서 다른 방법을 생각하다보니 오랜 시간을 소요했다.
작업을 수행하고 있는지 아닌지 파악하고, 작업을 수행하지 않을 경우에만 모든 일을 추가하는 방식으로 풀었다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 6593 상범빌딩, python, C++ (0) | 2021.12.28 |
---|---|
[프로그래머스] LEVEL3 이중우선순위큐, python (0) | 2021.12.26 |
[프로그래머스] 해시 level3 베스트 앨범, python (0) | 2021.12.26 |
[백준] 1504 특정한 최단경로 python (0) | 2021.12.24 |
[백준] 11444 피보나치수 6 C++ (0) | 2021.12.11 |