알고리즘/programmers

[Programmers 코딩테스트 고득점 Kit] 디스크 컨트롤러

꾸준함. 2021. 9. 23. 01:27

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42627

 

코딩테스트 연습 - 디스크 컨트롤러

하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를

programmers.co.kr

힙과 정렬을 이용하여 푸는 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. 작업을 시간순으로 정렬한 벡터를 생성해주고, 작업 소요시간이 짧은 순서가 우선순위를 갖는 힙을 생성해줍니다.

2. 초를 나타내는 sec 변수를 정의하고 0으로 초기화한 뒤,

2.1 1번에서 생성한 벡터 내 sec 이하인 작업들을 1번에서 생성한 pq에 넣어줍니다.

2.2 pq가 비어있을 경우 sec를 1 증가시켜주고 pq가 비어있지 않다면 제일 앞에 있는 작업을 처리해줍니다.

2.2.1 이 때, sec에 2.2에서 구한 작업의 소요시간을 더해주고 sum이라는 변수에는 (sec - 작업의 요청시간)을 더해줍니다.

3. 2번 과정을 작업이 모두 처리될 때까지 진행해줍니다.

4. sum / (총 작업 개수)를 반환해줍니다.

 

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형