- jobs : 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열
_ jobs의 길이 : 1 이상 500 이하
_ jobs[i] = [작업이 요청되는 시점, 작업의 소요시간]
_ 각 작업에 대해 작업이 요청되는 시간 : 0 이상 1,000 이하
_ 각 작업에 대해 작업의 소요시간 : 1 이상 1,000 이하
_ 하드디스크가 작업을 수행하고 있지 않을 때에는 먼저 요청이 들어온 작업부터 처리
- 들어온 순서대로 작업시간이 적은 순부터 처리
- priotiry_queue<int> 생성(오름차순)
- for문
[2020.08.09] 실패(segmentation fault)
#include <string>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
// 들어온 순서대로 작업시간이 적은 순부터 처리
using namespace std;
bool compare(const pair<int, int>& a, const pair<int, int>& b) {
return a.second < b.second;
}
int solution(vector<vector<int>> jobs) {
priority_queue<int, vector<int>, greater<int>> pq;
vector<pair<int, int>> tmp;
int answer = 0, time = 0, i = 1, j = 0, size = jobs.size();
while(j < size) {
if(time == 0) {
time = jobs[0][1] - jobs[0][0];
answer += time;
}
else {
for(;jobs[i][0] <= time; i++) {
tmp.push_back({jobs[i][0], jobs[i][1]});
}
sort(tmp.begin(), tmp.end(), compare);
time += tmp.front().second - 1;
answer += time - tmp.front().first;
tmp.erase(tmp.begin());
}
j++;
}
return answer/size;
}
- 2번째 while문에서 core dumped 발생