[Python][프로그래머스][Level3] 디스크 컨트롤러

[Python][프로그래머스][Level3] 디스크 컨트롤러

코드

def solution(jobs):
    N=len(jobs)
    time=answer=0
    jobs.sort(key= lambda x: x[1])
    while jobs:
        for idx, job in jobs:
            if idx<=time:
                answer+=time+job-idx
                time+=job
                jobs.remove([idx,job])
                break
        else:
            time+=1
    return answer//N

가장 효율적으로 만드는 방법은 그냥 가장 적게 걸리는 작업을 실행하는 것이다.

그래야 동시에 시간이 늘어나는 작업을 하나라도 줄일 수 있기 때문이다.

그래서 작업시간 순으로 정렬을 한다.

for문으로 순환하면서 idx가 time보다 큰, 이후 시간에 요청하는 작업은 수행하지 않고

수헹이 가능한 시간에 해당하는 작업일 경우 해당 작업의 시간을 더해준다.

수행 가능한 작업이 없을 경우 time을 1 증가시키고 다시 확인한다.

Discussion and feedback