#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
bool cmp(const vector<int> &v1, const vector<int> &v2){
if(v1[0]==v2[0]){
return v1[1]<v2[1];}
return v1[0]>v2[0];
}
int solution(vector<vector<int>> jobs) {
int divid=jobs.size();
int answer = 0;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> job;//우선순위큐 나중에 정렬할거
sort(jobs.begin(),jobs.end(),cmp); //큐를 요청시간에 따라서 정리함.
int current=0;//현재시간 0 초기화
while(jobs.empty()==0||job.empty()==0){//둘다 빌때까지 반복하것습니다.
for(int i=jobs.size(); 0<i;i--){//jobs 사이즈만큼 돌릴거임
if(jobs.back()[0]<=current){// 현재시간보다 작거나 같을때만 job에 넣어주고 jobs에선 빼줌
job.push({jobs.back()[1],jobs.back()[0]});
jobs.pop_back();
}
else{//current가 더 작을경우엔 포문 탈출함
break;}
}
if(job.empty()==1){
current++;
continue;
}
current=current+job.top().first;
answer=answer+current-job.top().second;
job.pop();
}
return answer/divid;
}
채점을 시작합니다.
정확성 테스트
테스트 1 〉 통과 (0.11ms, 3.96MB)
테스트 2 〉 통과 (0.09ms, 3.9MB)
테스트 3 〉 통과 (0.08ms, 3.95MB)
테스트 4 〉 통과 (0.09ms, 3.96MB)
테스트 5 〉 통과 (0.10ms, 3.95MB)
테스트 6 〉 통과 (0.01ms, 3.83MB)
테스트 7 〉 통과 (0.07ms, 3.97MB)
테스트 8 〉 통과 (0.06ms, 3.94MB)
테스트 9 〉 통과 (0.03ms, 3.92MB)
테스트 10 〉 통과 (0.10ms, 3.96MB)
테스트 11 〉 통과 (0.01ms, 3.91MB)
테스트 12 〉 통과 (0.01ms, 3.9MB)
테스트 13 〉 통과 (0.01ms, 3.96MB)
테스트 14 〉 통과 (0.01ms, 3.96MB)
테스트 15 〉 통과 (0.01ms, 3.95MB)
테스트 16 〉 통과 (0.01ms, 3.96MB)
테스트 17 〉 통과 (0.01ms, 3.95MB)
테스트 18 〉 통과 (0.01ms, 3.82MB)
테스트 19 〉 통과 (0.01ms, 3.98MB)
테스트 20 〉 통과 (0.01ms, 3.97MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0