https://school.programmers.co.kr/learn/courses/15008/lessons/121686#
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค PCCP ๋ชจ์๊ณ ์ฌ 1ํ - 4๋ฒ
์์์๊ฐ ์ฝ 59๋ถ ๐ฑ
์๋ฃ๊ตฌ์กฐ(heap), ์ฐ์ ์์ ํ ์ ํ, ์ถ์ ๋์ด๋๋ level 3 - ์ฌ์ด 4๊น์ง
์ต๊ทผ์ ํ๋ก๊ทธ๋๋จธ์ค์ ๋ ๋ฒจ 3 ๋ฌธ์ ์ธ
'๋์คํฌ ์ปจํธ๋กค๋ฌ ๋ฌธ์ (https://xxilliant.tistory.com/310)'๋ฅผ ํ์ด๋ดค๋ ๊ฒ ํฐ ๋์์ด ๋์๋ค.
์ด๊ฑฐ ์ํด๋ดค์ผ๋ฉด ในใ ์ฝ์ง ์์ฒญ ํ์๋ฏ,,,
๋์ฐฉ์๊ฐ์ด ๋๋ฉด ๋ค์ด์ค๋ ๊ฐ๋ค ์ค์์ ์ฐ์ ์์๋ฅผ ์ง์ ํด์ค์ผ ํ๋ฏ๋ก priority queue๋ฅผ ์ฌ์ฉํด์ฃผ์๋ค.
์ ๋ ฌ์ struct ์ ์ธ ํ, bool operator ํจ์๋ฅผ ๋ช ์ํด์ฃผ๋ฉด ๋๋ค ใ ใ ์ด๊ฒ ๊ฝค๋ ์ด๋ ค์์ ์ธ์์ผ๊ฒ ์
๋์ ํ์ด
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
struct compare{
bool operator()(const vector<int>& a, const vector<int>& b){
if(a[0]==b[0]) return a[1] > b[1];
return a[0] > b[0]; // ์๊ฐ์์ผ๋ก ๋ค์ด์จ ๋ด์ฉ ์ค์ ์ ์ ์ฐ์
}
};
bool comp(vector<int> a, vector<int> b){
if(a[1]==b[1]) return a[0] < b[0];
return a[1] < b[1]; // ์๊ฐ์ ์ ๋ ฌ
}
// ๋น์ ์ , ์ฐ์ ์์=์ ์ ๋ฎ์๊ฑฐ๋ถํฐ
// ์ ์ฒด ์ข
๋ฃ์๊ฐ, [์ ์]์ ๋๊ธฐ์๊ฐ sum
vector<long long> solution(vector<vector<int>> program) {
sort(program.begin(), program.end(), comp); // ์ ์,์๊ฐ,์คํ์๊ฐ
vector<long long> answer;
long long waiting[10] = {0,};
priority_queue<vector<int>, vector<vector<int>>, compare> pq;
long long time = 0;
int isRunning = 0;
int index = 0;
while(!pq.empty() || index < program.size() || isRunning>0){
// ์ธ๋ฑ์ค ๋ฒ์ && ๋์ฐฉ ์๊ฐ์ด ๋๋ฉด push
while(index < program.size() && time >= program[index][1]){
pq.push(program[index]);
index++;
}
// ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์์ผ๋ฉด
if(!pq.empty() && isRunning==0){
vector<int> p = pq.top();
pq.pop();
isRunning = p[2];
// ๋๊ธฐ์๊ฐ = ์์ ์๊ฐ - ๋์ฐฉ ์๊ฐ
waiting[p[0]-1] += time - p[1];
}
time ++;
if(isRunning>0) isRunning--;
}
answer.push_back(time);
for(long long num: waiting) answer.push_back(num);
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 2๋ฒ - ์ฒด์ก๋ํ (0) | 2025.05.02 |
---|---|
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #1] 1๋ฒ - ์ธํจ์ด ์ํ๋ฒณ (0) | 2025.05.02 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 4๋ฒ - ๋ณด๋ฌผ์ง๋ (0) | 2025.05.01 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 3๋ฒ - ์นดํ ํ์ฅ (0) | 2025.05.01 |
[C++/PGS] [PCCP ๋ชจ์๊ณ ์ฌ #2] 2๋ฒ - ์ ์ ์ฌ์ ๊ต์ก (2) | 2025.04.28 |