본문 바로가기
프로그래머스

프로그래머스 디스크 컨트롤러

by 콩순이냉장고 2021. 11. 2.

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

 

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

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

programmers.co.kr

 

문제 접근법 : 

pq를 이용하는 문제입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
int solution(vector<vector<int>> jobs) {
    int answer = 0, time = 0;
    int idx = 0;
    priority_queue<pii, vector<pii>, greater<pii>> pq;
    sort(jobs.begin(), jobs.end());
    while (idx < jobs.size() || !pq.empty()) {
        if (idx < jobs.size() && time >= jobs[idx][0]) {
            pq.push({ jobs[idx][1],jobs[idx++][0] });
            continue;
        }
        if (pq.empty())
            time = jobs[idx][0];
        else {
            time += pq.top().first;
            answer += time - pq.top().second;
            pq.pop();
        }
    }
    return answer / jobs.size();
}
cs

 

 

궁금한점 혹은 모르는점 어떤 질문이든 댓글은 언제나 환영입니다.