728x90
sort ์ ๋ ฌ์ ํ ๋ cmp๋ฅผ ์ฌ์ฉํด์ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ์์ง๋ง ํ ์คํธ ์ผ์ด์ฌ ์ ๋ถ ํต๊ณผํ์ง ๋ชปํ๋ค. ์์ฒญํ ์์๋๋ก ์ถ๊ฐ๋ฅผ ํ๊ณ ์ถ๊ฐ๋ฅผ ํ ๋ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ operation์ ์ถ๊ฐํด์ ๋ฃ์ผ๋ฉด ํ ์คํธ ์ผ์ด์ฌ ๋ชจ๋ ํต๊ณผํ ์ ์๋ค.
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <iostream>
using namespace std;
struct cmp {
bool operator()(vector<int>a, vector<int> b) {
return a[1] > b[1];
}
};
int solution(vector<vector<int>> jobs) {
int answer = 0;
int task = 0;
int time = 0;
// pq์ ๊ฐ์ ๋ฃ๊ฒ ๋๋ ๊ฒฝ์ฐ ์์
์๊ฐ์ด ์งง์ ์์๋๋ก ์ ๋ ฌ์ด ๋๋ค.
priority_queue<vector<int>, vector<vector<int>>, cmp> pq;
// ์์ฒญ ์์๋๋ก ์ ๋ ฌ
sort(jobs.begin(), jobs.end());
while(task < jobs.size() || !pq.empty()) {
if(jobs.size() > task && time >= jobs[task][0]) {
pq.push(jobs[task++]);
continue;
}
if(!pq.empty()) {
time += pq.top()[1];
answer += time - pq.top()[0];
pq.pop();
} else
time = jobs[task][0];
}
return answer/jobs.size();
}
๋ค์์ ํด๋น ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ชจ๋ ํต๊ณผํ ์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> jobs) {
int answer = 0;
int time = 0;
int sum = 0;
for(int i = 0 ; i < jobs.size() ; i++) {
int count = 0;
int index = 0;
time += jobs[i][1];
int next = jobs[i+1][1];
// ํ์ฌ ์ํํ๊ณ ์๋ ๊ฒ ๋ค์๋ถํฐ for๋ฌธ์ผ๋ก ๋๋ฆฐ๋ค.
for(int j = i+1 ; j < jobs.size() ; j++) {
// ๋ง์ฝ ์ด์ ์ํํ ์๊ฐ ๋ด์ ์์ฒญ์ด ๋ค์ด์จ ์์
์ด ์๋ ๊ฒฝ์ฐ
if(jobs[j][0] <= time) {
// ๋ค์ ์ํํ ๊ฒ์ ์์
์๊ฐ์ด next๋ณด๋ค ์์ ๊ฒฝ์ฐ
// next๋ฅผ ์ต์ ํํ๊ณ index ๋ณ์์ ์ํ๋ index ๊ฐ์ ๋ฃ์ด์ค๋ค.
if(next > jobs[j][1]) {
count++;
next = jobs[j][1];
index = j;
}
}
}
// ๋ง์ฝ count๋ ๊ฒ์ด ํ๋๋ผ๋ ์กด์ฌํ๋ฉด ์์
์๊ฐ ๋ด์ ์์ฒญ์ด ๋ค์ด์จ ๊ฒ์ด
// 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ต์์์
์๊ฐ์ ๊ฐ๋ ์์ฒญ์ i+1 ๋ฒ์งธ์ ๋ฐ๊ฟ์ค๋ค.
if(count >= 1) {
vector<int> temp = jobs[index];
jobs[index] = jobs[i+1];
jobs[i+1] = temp;
}
}
for(int i= 0 ; i < jobs.size() ; i++) {
cout << jobs[i][0] << " " << jobs[i][1] << endl;
}
for(int i= 0 ; i < jobs.size() ; i++) {
sum += jobs[i][1];
answer += sum - jobs[i][0];
}
answer = answer / jobs.size();
return answer;
}
'๐ Self Study > ๐ Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (์ด์ค์ฐ์ ์์ํ, ํ(Heap)) C++ (0) | 2022.01.05 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (๊ฐ์ฅ ํฐ ์, ์ ๋ ฌ) C++ (0) | 2022.01.04 |
ํ๋ก๊ทธ๋๋จธ์ค (ํ๋ฆฐํฐ, ์คํ/ํ) C++ (0) | 2022.01.04 |
ํ๋ก๊ทธ๋๋จธ์ค (์ง์ง์ด ์ ๊ฑฐํ๊ธฐ, 2017 ํ์คํ์ด) C++ (0) | 2022.01.04 |
ํ๋ก๊ทธ๋๋จธ์ค (๊ธฐ๋ฅ ๊ฐ๋ฐ, ์คํ/ํ) C++ (0) | 2022.01.03 |