λ¬Έμ
νλλμ€ν¬λ ν λ²μ νλμ μμ λ§ μνν μ μμ΅λλ€. λμ€ν¬ 컨νΈλ‘€λ¬λ₯Ό ꡬννλ λ°©λ²μ μ¬λ¬ κ°μ§κ° μμ΅λλ€. κ°μ₯ μΌλ°μ μΈ λ°©λ²μ μμ²μ΄ λ€μ΄μ¨ μμλλ‘ μ²λ¦¬νλ κ²μ λλ€.
μλ₯Ό λ€μ΄
- 0ms μμ μ 3msκ° μμλλ A μμ μμ² - 1ms μμ μ 9msκ° μμλλ Bμμ μμ² - 2ms μμ μ 6msκ° μμλλ Cμμ μμ²
μ κ°μ μμ²μ΄ λ€μ΄μμ΅λλ€. μ΄λ₯Ό κ·Έλ¦ΌμΌλ‘ νννλ©΄ μλμ κ°μ΅λλ€.
ν λ²μ νλμ μμ²λ§μ μνν μ μκΈ° λλ¬Έμ κ°κ°μ μμ μ μμ²λ°μ μμλλ‘ μ²λ¦¬νλ©΄ λ€μκ³Ό κ°μ΄ μ²λ¦¬λ©λλ€.
- A: 3ms μμ μ μμ μλ£ (μμ²μμ μ’ λ£κΉμ§ : 3ms)
- B: 1msλΆν° λκΈ°νλ€κ°, 3ms μμ μ μμ μ μμν΄μ 12ms μμ μ μμ μλ£(μμ²μμ μ’ λ£κΉμ§ : 11ms)
- C: 2msλΆν° λκΈ°νλ€κ°, 12ms μμ μ μμ μ μμν΄μ 18ms μμ μ μμ μλ£(μμ²μμ μ’ λ£κΉμ§ : 16ms)
μ΄λ κ° μμ μ μμ²λΆν° μ’ λ£κΉμ§ κ±Έλ¦° μκ°μ νκ· μ 10ms(= (3 + 11 + 16) / 3)κ° λ©λλ€.
νμ§λ§ A → C → B μμλλ‘ μ²λ¦¬νλ©΄
- A: 3ms μμ μ μμ μλ£(μμ²μμ μ’ λ£κΉμ§ : 3ms)
- C: 2msλΆν° λκΈ°νλ€κ°, 3ms μμ μ μμ μ μμν΄μ 9ms μμ μ μμ μλ£(μμ²μμ μ’ λ£κΉμ§ : 7ms)
- B: 1msλΆν° λκΈ°νλ€κ°, 9ms μμ μ μμ μ μμν΄μ 18ms μμ μ μμ μλ£(μμ²μμ μ’ λ£κΉμ§ : 17ms)
μ΄λ κ² A → C → Bμ μμλ‘ μ²λ¦¬νλ©΄ κ° μμ μ μμ²λΆν° μ’ λ£κΉμ§ κ±Έλ¦° μκ°μ νκ· μ 9ms(= (3 + 7 + 17) / 3)κ° λ©λλ€.
κ° μμ μ λν΄ [μμ μ΄ μμ²λλ μμ , μμ μ μμμκ°]μ λ΄μ 2μ°¨μ λ°°μ΄ jobsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μμ μ μμ²λΆν° μ’ λ£κΉμ§ κ±Έλ¦° μκ°μ νκ· μ κ°μ₯ μ€μ΄λ λ°©λ²μΌλ‘ μ²λ¦¬νλ©΄ νκ· μ΄ μΌλ§κ° λλμ§ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. (λ¨, μμμ μ΄νμ μλ λ²λ¦½λλ€)
<μ ν μ¬ν>
- jobsμ κΈΈμ΄λ 1 μ΄μ 500 μ΄νμ λλ€.
- jobsμ κ° νμ νλμ μμ μ λν [μμ μ΄ μμ²λλ μμ , μμ μ μμμκ°] μ λλ€.
- κ° μμ μ λν΄ μμ μ΄ μμ²λλ μκ°μ 0 μ΄μ 1,000 μ΄νμ λλ€.
- κ° μμ μ λν΄ μμ μ μμμκ°μ 1 μ΄μ 1,000 μ΄νμ λλ€.
- νλλμ€ν¬κ° μμ μ μννκ³ μμ§ μμ λμλ λ¨Όμ μμ²μ΄ λ€μ΄μ¨ μμ λΆν° μ²λ¦¬ν©λλ€.
λ¬Έμ μ£Όμ: https://programmers.co.kr/learn/courses/30/lessons/42627
λ¬Έμ νμ΄
μ μ νμλ λΌλ©΄κ³΅μ₯ λ¬Έμ μ μ μ¬ν λ¬Έμ μΈλ°, μ°μ μμ νμ λΉκ΅ κΈ°μ€μ μ μν΄μ€μΌ νλ€λ μ μμ μ½κ° λ μ΄λ €μ΄ λ¬Έμ μ λλ€.
μ°μ jobsλ₯Ό μμ μμ² μμ μ΄ λΉ λ₯Έ μμλλ‘ μ λ ¬ν©λλ€. κ·Έλ¦¬κ³ μμ μ λͺ¨λ μ²λ¦¬ν λκΉμ§ λ€μμ λ°λ³΅ν©λλ€. μ΄λ, μ°μ μμ νμ λͺ¨λ μμ μ λ£μκ³ νκ° λΉμμ κ²½μ° μμ μ λͺ¨λ μ²λ¦¬ν κ²μ λλ€.
1. νμ¬ μκ°λ³΄λ€ μμ μμ² μμ μ΄ λΉ λ₯Έ μμ μ λͺ¨λ μ°μ μμ νμ μ½μ
2-1. μνν μμ μ΄ μλ κ²½μ°
1) νμ¬ μκ°μ μμ μ μμ μκ°μ λν¨
2) answerμ μμ μμ²μμ μ’ λ£κΉμ§ μκ°(νμ¬ μκ° - μμ μμ² μμ )μ λν¨
3) μ°μ μμ νμμ μμ μμ
2-2. μνν μμ μ΄ μλ κ²½μ°
1) νμ¬ μκ°μ λ€μ μμ μ΄ λ€μ΄μ€λ μκ°μΌλ‘ λ³κ²½
μμ€μ½λ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// λμ€ν¬ 컨νΈλ‘€λ¬
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
// μμ
μ μμ μκ°μ΄ 짧μ μμΌλ‘ μ λ ¬νκΈ° μν λΉκ΅ ꡬ쑰체
struct compare {
bool operator()(vector<int> a, vector<int> b) {
return a[1] > b[1];
}
};
int solution(vector<vector<int>> jobs) {
int answer = 0;
priority_queue<vector<int>, vector<vector<int>>, compare> pq;
int time = 0; // νμ¬ μκ°
int idx = 0; // μ°μ μμ νμ λ€μ΄κ° μμ
μ κ°μ
sort(jobs.begin(), jobs.end()); // μμ
μ΄ μμ²λλ μμ μ΄ λΉ λ₯Έ μμΌλ‘ μ λ ¬
while (idx < jobs.size() || !pq.empty()) {
// νμ¬ μνν μ μλ μμ
μ λͺ¨λ μ°μ μμ νμ λ£λλ€
if (idx < jobs.size() && jobs[idx][0] <= time) {
pq.push(jobs[idx++]);
continue;
}
// μνν μμ
μ΄ μλ κ²½μ°
if (!pq.empty()) {
time += pq.top()[1];
answer += time - pq.top()[0];
pq.pop();
}
// μνν μμ
μ΄ μλ κ²½μ°
else {
// λ€μ μμ
μ΄ λ€μ΄μ€λ μκ°μΌλ‘ λ³κ²½
time = jobs[idx][0];
}
}
return answer/jobs.size(); // νκ· μκ° λ°ν
}
|
cs |
곡λΆν κ²μ μ 리ν λ΄μ©μ λλ€. μμ ν λΆλΆμ΄ μλ€λ©΄ μλ €μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ :)
'Algorithm > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ / C++] μμ μ°ΎκΈ° νμ΄ (11) | 2020.07.30 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ / c++] μ΄μ€μ°μ μμν νμ΄ (0) | 2020.07.29 |
[νλ‘κ·Έλλ¨Έμ€ / C++] λΌλ©΄κ³΅μ₯ νμ΄ (0) | 2020.07.24 |
[νλ‘κ·Έλλ¨Έμ€ / C++] λ λ§΅κ² νμ΄ (0) | 2020.07.24 |
[C++] νλ‘κ·Έλλ¨Έμ€ - "λͺ¨μκ³ μ¬" νμ΄ (0) | 2020.07.03 |