[10/21] 디스크 컨트롤러

이경준·2021년 10월 21일
0

코테

목록 보기
139/140
post-custom-banner

레벨3 문제

내 코드

from collections import deque
import heapq

def solution(jobs):
    n = len(jobs)
    jobs.sort(key = lambda x:x[0])
    jobs = deque(jobs)
    request = []
    time = []   # 각 작업의 소요시간을 모아놓은 리스트
    sec = 0
    
    while ( len(jobs) > 0 or len(request) > 0 ):
        
        # 시간이 맞으면, request 리스트에 추가
        while ( len(jobs) > 0 and jobs[0][0] <= sec ):
            start, work = jobs.popleft()
            heapq.heappush(request, [work, start])
            
        # request 리스트에 무언가 들어있다면
        if request:
            # work : 작업의 소요시간, start : 작업이 요청되는 시점
            work, start = heapq.heappop(request)
            waiting_time = ( sec - start ) + work
            sec += work
            time.append(waiting_time)
            
        # 작업이 없는 경우
        else:
            sec += 1
        
    answer = sum(time) // n
    return answer

로직

  • 시간 0부터 시작

  • 시간이 흘러감에 따라 함수 진행 (while문 써야할듯)

  • 요청 리스트가 텅 비면 함수 종료

  • 해당 시간에 들어와있는 요청 리스트 필요 (queue)

  • 소요시간 리스트 필요

피드백

  • '입출력 예'의 리스트는 정렬되어 있어서 그렇게 알고 풀었는데, 테스트케이스는 그러지 않았었다. 한두개의 '입출력 예'만 보고 당연하다고 생각하고 풀지 말자.
profile
The Show Must Go On
post-custom-banner

0개의 댓글