[프로그래머스] 디스크 컨트롤러
코딩테스트 연습 - 디스크 컨트롤러 바로가기
문제 설명
문제 풀이
최대힙을 사용하는 우선순위 큐는 top 에 있는 원소를 꺼낼 때, O(1) 시간이 소요됨을 활용하고자 하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct Comp {
bool operator()(vector<int> lhs, vector<int> rhs) {
return lhs.at(1) > rhs.at(1);
}
};
int solution(vector<vector<int>> jobs) {
int answer = 0;
int curr_job = 0, curr_time = 0;
sort(jobs.begin(), jobs.end());
priority_queue<vector<int>, vector<vector<int>>, Comp> pq;
while (curr_job < jobs.size() || !pq.empty()) {
if (jobs.size() > curr_job && curr_time >= jobs[curr_job][0]) {
pq.push(jobs[++curr_job]);
continue;
}
else if (!pq.empty()) {
curr_time += pq.top()[1];
answer += (curr_time - pq.top()[0]);
pq.pop();
}
else {
curr_time = jobs[curr_job][0];
}
}
return (answer / (int)jobs.size());
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.