https://school.programmers.co.kr/learn/courses/30/lessons/12920
λ¬Έμ μ€λͺ
μ²λ¦¬ν΄μΌ ν λμΌν μμ μ΄ n κ°κ° μκ³ , μ΄λ₯Ό μ²λ¦¬νκΈ° μν CPUκ° μμ΅λλ€.
μ΄ CPUλ λ€μκ³Ό κ°μ νΉμ§μ΄ μμ΅λλ€.
- CPUμλ μ¬λ¬ κ°μ μ½μ΄κ° μκ³ , μ½μ΄λ³λ‘ ν μμ μ μ²λ¦¬νλ μκ°μ΄ λ€λ¦ λλ€.
- ν μ½μ΄μμ μμ μ΄ λλλ©΄ μμ μ΄ μλ μ½μ΄κ° λ°λ‘ λ€μ μμ μ μνν©λλ€.
- 2κ° μ΄μμ μ½μ΄κ° λ¨μ κ²½μ° μμ μ½μ΄λΆν° μμ μ μ²λ¦¬ ν©λλ€.
μ²λ¦¬ν΄μΌ λ μμ μ κ°μ nκ³Ό, κ° μ½μ΄μ μ²λ¦¬μκ°μ΄ λ΄κΈ΄ λ°°μ΄ cores κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, λ§μ§λ§ μμ μ μ²λ¦¬νλ μ½μ΄μ λ²νΈλ₯Ό return νλ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν
- μ½μ΄μ μλ 10,000 μ΄ν 2μ΄μ μ λλ€.
- μ½μ΄λΉ μμ μ μ²λ¦¬νλ μκ°μ 10,000μ΄ν μ λλ€.
- μ²λ¦¬ν΄μΌ νλ μΌμ κ°μλ 50,000κ°λ₯Ό λκΈ°μ§ μμ΅λλ€.
μ μΆλ ₯ μ
n | cores | result |
6 | [1,2,3] | 2 |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
μ²μ 3κ°μ μμ μ κ°κ° 1,2,3λ²μ λ€μ΄κ°κ³ , 1μκ° λ€ 1λ² μ½μ΄μ 4λ²μ§Έ μμ ,λ€μ 1μκ° λ€ 1,2λ² μ½μ΄μ 5,6λ²μ§Έ μμ μ΄ λ€μ΄κ°λ―λ‘ 2λ₯Ό λ°νν΄μ£Όλ©΄ λ©λλ€.
λ΄ ν΄λ΅
#include <string>
#include <vector>
using namespace std;
int solution(int n, vector<int> cores)
{
if(n <= cores.size())
return n;
int min_time = -1;
int max_time = 2e5;
while(min_time+1 < max_time)
{
int avg_time = (min_time+max_time)/2;
int count = cores.size();
for(const auto& i : cores)
count += (avg_time / i);
if(count >= n)
max_time = avg_time;
else
min_time = avg_time;
}
int count = cores.size();
for(int i = 0; i < cores.size(); ++i)
count += min_time/cores[i];
for(int i = 0; i < cores.size(); ++i)
{
if((min_time+1) % cores[i] == 0)
++count;
if(count == n)
return i+1;
}
return 0;
}
'π₯οΈ Study Note > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] level.2 - λ λ°λ¨ΉκΈ°(C++) (0) | 2023.05.22 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] level.3 - κ²½μ£Όλ‘ κ±΄μ€(C++) (1) | 2023.05.19 |
[νλ‘κ·Έλλ¨Έμ€] level.3 - νκ΄΄λμ§ μμ 건물(C++) (0) | 2023.05.16 |
[νλ‘κ·Έλλ¨Έμ€] level.3 - κ°μ₯ λ¨Ό λ Έλ(C++) (0) | 2023.05.15 |
[νλ‘κ·Έλλ¨Έμ€] level.3 - μ§κ²λ€λ¦¬ 건λκΈ° (C++) (0) | 2023.05.12 |