반응형

 

이번 문제는 [프로그래머스 - 힙 - 디스크 컨트롤러] 입니다!

문제 링크 :

https://programmers.co.kr/learn/courses/30/lessons/42627

 

코딩테스트 연습 - 디스크 컨트롤러 | 프로그래머스

하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의

programmers.co.kr

이전에 풀어봤던 라면공장 문제와 매우 비슷한데, 컴퓨터의 스케쥴러의 매우 간단한 구조를 구현하는 것입니다.
주어진 컨트롤러는 작업 요청이 들어온 작업들 LIST를 가지고 있고, 이 LIST에 있는 모든 작업들이 완료되었을 때,
평균 소요시간(작업완료시점 - 요청시점) 이 가장 짧아지는 작업 순서를 구하는 것이 문제입니다.

자세한 내용은 문제를 직접 보시는 것이 좋을 것 같습니다.

 

변수 : 

  1) t : 현재 시간

  2) jobs : 작업 list

  3) t_spent : 작업별 소요시간을 적은 list(순서대로 X)

  4) a_jobs : 특정 시점 t에서 수행 가능한 작업 list

 

방법 : 

  1) 현재 시점 t에서 수행 가능한 작업들을 찾아 a_jobs에 넣는다.

  2) 가장 짧은 작업시간을 가진 작업을 수행한다.(작업시간을 기준으로 Reverse Sort 후 pop)

  3) 현재 시간에 작업시간을 더한다.

  4) 소요시간을 t_spent에 넣는다.

  5) 더 이상 작업 리스트에 작업이 남아있지 않다면, a_jobs에 남은 작업들을 순차적으로 수행한다.

  6) t_spent의 평균을 구한 후 return한다.

 

이상 끝-!

 

반응형

+ Recent posts