이번 문제는 [프로그래머스 - 힙 - 디스크 컨트롤러] 입니다!
문제 링크 :
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한다.
이상 끝-!
'Computer Science > 알고리즘' 카테고리의 다른 글
Hackerrank - Binary Search Trees (0) | 2020.02.17 |
---|---|
Hackerrank - Repeated String (0) | 2019.12.28 |
프로그래머스 풀이 - 코딩테스트 #힙 #라면공장 (0) | 2019.10.30 |
프로그래머스 풀이 - 코딩테스트 #힙 #더 맵게 (0) | 2019.10.29 |
프로그래머스 풀이 - 코딩테스트 #스택/큐 #주식 가격 (0) | 2019.10.28 |