λ¬Έμ :
https://programmers.co.kr/learn/courses/30/lessons/42627
νμ΄ :
λμ€ν¬ μ€μΌμ€λ§νλ λ¬Έμ μλ€.
inputμΌλ‘ [[0,3], [1, 9], [2, 6]] (μμ² μκ°, μμ μμ μκ°)μ΄ μ£Όμ΄μ‘μλ
μ΄λ€μ κ°μ₯ μ§§κ² μμ μ λλ΄λ μκ° / 3 νμ¬ νκ· μκ°μ ꡬν΄μ£Όλ λ¬Έμ μλ€.
μ°μ μ μμ μμ μκ°μ΄ 짧μ κ²μ λ¨Όμ μ²λ¦¬νκΈ° μν΄μ μ°μ μμνλ₯Ό μ¬μ©νλ€.
μμ μ μμ²μκ°μ΄ 짧μ μμΌλ‘ sorting νλ€.
κ·Έλ¦¬κ³ μμ μ λͺ¨λ λλκΉμ§ && queueμ μλ μμλ₯Ό λ€ μ²λ¦¬ν΄μ κ³μ°ν λκΉμ§ λ°λ³΅νμ¬ μννλ€.
μ°μ νμ¬μκ°μ μμ μ μμ μκ°μΌλ‘ λμ λλ€.
[0,3] -> [2,6] -> [1, 9]μΌλ‘ μμ μ΄ μμλ
curTime = 3 + 6 + 9 μμΌλ‘ λμ λλ€. λ°λΌμ νμ¬ μκ° μμμ μμ²λλ μμ μ΄ μμ κ²½μ°μ pqμ λ£μ΄μ€λ€.
κ·Έλ κ² νμ¬ μκ° μμμ μμ²λλ μμ λ€μ λͺ¨λ pqμ λ£μ΄λκ³
pqμμ popνλ©° μμ μκ°μ κ³μ°ν κ²μ΄λ€.
νμ¬ μκ°μ μκΉ λ§νλ κ²μ²λΌ μμ μκ°μ λμ μ΄λ©°
curTime += pq.top()[1]
answerμ νμ¬ μκ°μμ μ€λ³΅λ μμ² μκ°μ λΉΌμ€μ± λμ νλ€.
answer += curTime - pq.top()[0]
pqκ° λΉμ΄μλ€λ©΄ νμ¬ μκ° μμμ μνν μμ μ΄ μλ€λ κ²μΌλ‘ λ€μ μμ μΌλ‘ curTimeμ λ°κΏμ€λ€.
C++ μ½λ :
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
struct compare
{ //μ€λ¦μ°¨μ
bool operator()(const vector<int>& v1, const vector<int>& v2)
{
return v1[1] > v2[1];
}
};
int solution(vector<vector<int>> jobs) {
int answer = 0;
int taskCnt = 0;
int curTime = 0;
priority_queue<vector<int>, vector<vector<int>>, compare> pq;
sort(jobs.begin(), jobs.end()); // μμ
μμμκ° μ§§μ μμΌλ‘ μ λ ¬
while(taskCnt < jobs.size() || !pq.empty()){
if (taskCnt < jobs.size() && jobs[taskCnt][0] <= curTime) {
//μμ²λλ μμ
μκ°μ΄ νμ¬ μκ°λ³΄λ€ μμμΌ μμ
μν κ°λ₯
pq.push(jobs[taskCnt++]);
continue;
}
if(!pq.empty()) {
curTime += pq.top()[1]; //μμ μκ°
answer += curTime - pq.top()[0]; //μμ² μμ
pq.pop();
}else {
// curTime > job[taskCnt] && pq λΉμ΄ μλ κ²½μ°
// μ¦ κ²ΉμΉμ§ μλ κ²½μ°
curTime = jobs[taskCnt][0];
}
}
return answer/jobs.size();
}
κ²°κ³Ό :
'Algorithmπ° > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] Swift νκ΄΄λμ§ μμ 건물 λμ ν© (0) | 2022.05.02 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] Swift μ€νμ±ν λ°© 2019 kakao (0) | 2022.05.02 |
[νλ‘κ·Έλλ¨Έμ€] Swift 2022 kakao μ£Όμ°¨ μκΈ κ³μ° (0) | 2022.04.19 |
[νλ‘κ·Έλλ¨Έμ€] Swift μΉ΄μΉ΄μ€ 2022 kμ§μμμ μμ κ°μ ꡬνκΈ° implementation (0) | 2022.04.15 |
[νλ‘κ·Έλλ¨Έμ€] Swift μμ μ΅λν (0) | 2022.04.14 |
λκΈ