https://school.programmers.co.kr/learn/courses/30/lessons/42627
λ¬Έμ μ€λͺ
νλλμ€ν¬λ ν λ²μ νλμ μμ λ§ μνν μ μμ΅λλ€. λμ€ν¬ 컨νΈλ‘€λ¬λ₯Ό ꡬννλ λ°©λ²μ μ¬λ¬ κ°μ§κ° μμ΅λλ€. κ°μ₯ μΌλ°μ μΈ λ°©λ²μ μμ²μ΄ λ€μ΄μ¨ μμλλ‘ μ²λ¦¬νλ κ²μ λλ€.
μλ₯Όλ€μ΄
- `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 μ΄νμ λλ€.
- νλλμ€ν¬κ° μμ μ μννκ³ μμ§ μμ λμλ λ¨Όμ μμ²μ΄ λ€μ΄μ¨ μμ λΆν° μ²λ¦¬ν©λλ€.
μ μΆλ ₯ μ
jobs return
[[0, 3], [1, 9], [2, 6]] | 9 |
μ μΆλ ₯ μ μ€λͺ
λ¬Έμ μ μ£Όμ΄μ§ μμ κ°μ΅λλ€.
- 0ms μμ μ 3ms 걸리λ μμ μμ²μ΄ λ€μ΄μ΅λλ€.
- 1ms μμ μ 9ms 걸리λ μμ μμ²μ΄ λ€μ΄μ΅λλ€.
- 2ms μμ μ 6ms 걸리λ μμ μμ²μ΄ λ€μ΄μ΅λλ€.
λ΄ ν΄λ΅
#include <string> #include <vector> #include <queue> #include <algorithm> #include <iostream> using namespace std; struct cmp { bool operator()(vector<int> a, vector<int> b) { return a.at(1) > b.at(1); } }; int solution(vector<vector<int>> jobs) { int answer = 0; int timer = 0; int nxt_job_idx = 0; vector<int> cur_job{0, 0}; priority_queue<vector<int>, vector<vector<int>>, cmp> pd_job{}; sort(jobs.begin(), jobs.end()); while(jobs.size() > nxt_job_idx || !pd_job.empty()) { // νμ¬ λ€μ΄μ¨ μμ
μ΄ μλ€λ©΄ pd_jobμ λ£μ΄μ€λ€. if(jobs.size() > nxt_job_idx) { if(timer >= jobs[nxt_job_idx][0]) { pd_job.push(jobs[nxt_job_idx]); ++nxt_job_idx; continue; // κ°μ μκ°λμ λ€μ΄μ¨ μμ
μ΄ μμ μ μμΌλ―λ‘ } } // μμ
νμ μμ
μ΄ μμΌλ©΄ μμ
μ§ν if(!pd_job.empty()) { // μμ
μ§ν timer += pd_job.top()[1]; // μμ
μλ£ answer += (timer - pd_job.top()[0]); pd_job.pop(); } // μμ
νμ μμ
μ΄ μμΌλ©΄ λ€μ μμ
μμ μκ°μΌλ‘ μ΄λ else timer = jobs[nxt_job_idx][0]; } // μκ° νκ· λ΄κΈ° answer /= jobs.size(); return answer; }
'π₯οΈ Study Note > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€ / level.2 / μ λ ₯λ§μ λλ‘ λλκΈ°(C++) (0) | 2023.04.06 |
---|---|
νλ‘κ·Έλλ¨Έμ€ / level.2 / λͺ¨μμ¬μ (C++) (0) | 2023.04.05 |
νλ‘κ·Έλλ¨Έμ€ / level.2 / λ λ§΅κ²(C++) (0) | 2023.04.02 |
νλ‘κ·Έλλ¨Έμ€ / level.2 / νΌλ‘λ(C++) (0) | 2023.04.01 |
νλ‘κ·Έλλ¨Έμ€ / level.2 / μΉ΄ν«(C++) (0) | 2023.03.30 |