사용 언어 - Python3
문제 - 디스크 컨트롤러
정답
import heapq (정답 맞춘 여부 X)
answer = 0작업의 요청부터 종료까지 걸린 시간
now = 0 현재 시점
i = 0 jobs의 처리개수 저장하기
start = -1 시작시점
i < len(jobs) 만족할때(jobs 전부 처리할때)까지 while 반복문 수행
j[0] 도착시간이 start와 now 사이에 있다면, 현재 시점에서 처리할 수 있는 작업이다.
=> heapq.heappush(heap, [j[1],j[0]]) : 자동 정렬되어 처리시간이 작은 것 부터 저장된다.
만약 heap에 처리할 작업이 있다면,
current = heapq.heappop(heap) 정렬된 heapq에서 왼쪽부터 한개씩 없애주기
start = now
now += current[0] 현재 = 현재+작업시간
anwer += (now - current[1]) 작업 요청시간부터 종료시간까지의 시간 계산
i += 1 jobs 하나 처리완료
만약 처리할 작업이 없다면,
now += 1 다음 시간으로 넘어가기
return int(answer /len(jobs)) 작업의 요청부터 종료까지 걸린 시간의 평균
import heapq
def solution(jobs):
answer,now,i = 0,0,0
start = -1
heap = []
while i < len(jobs):
for j in jobs:
if start < j[0] <= now:
heapq.heappush(heap,[j[1],j[0]])
if len(heap) > 0:
current = heapq.heappop(heap)
start = now
now += current[0]
answer += (now-current[1])
i += 1
else:
now += 1
return int(answer/len(jobs))
레퍼런스
- 정답 깃허브
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[프로그래머스] PCCP 모의고사 1회 3번 유전법칙 (0) | 2023.12.14 |
---|---|
[프로그래머스 lv 3] 이중우선순위큐 (0) | 2023.06.19 |
[프로그래머스 lv 2] 더 맵게 (0) | 2023.06.16 |
우선순위 큐와 힙 (0) | 2023.06.16 |
[프로그래머스 lv1] 햄버거 만들기 (1) | 2023.05.10 |
댓글