https://school.programmers.co.kr/learn/courses/30/lessons/43238
λ¬Έμ μ€λͺ
nλͺ μ΄ μ κ΅μ¬μ¬λ₯Ό μν΄ μ€μ μμ κΈ°λ€λ¦¬κ³ μμ΅λλ€. κ° μ κ΅μ¬μ¬λμ μλ μ¬μ¬κ΄λ§λ€ μ¬μ¬νλλ° κ±Έλ¦¬λ μκ°μ λ€λ¦ λλ€.
μ²μμ λͺ¨λ μ¬μ¬λλ λΉμ΄μμ΅λλ€. ν μ¬μ¬λμμλ λμμ ν λͺ λ§ μ¬μ¬λ₯Ό ν μ μμ΅λλ€. κ°μ₯ μμ μ μλ μ¬λμ λΉμ΄ μλ μ¬μ¬λλ‘ κ°μ μ¬μ¬λ₯Ό λ°μ μ μμ΅λλ€. νμ§λ§ λ 빨리 λλλ μ¬μ¬λκ° μμΌλ©΄ κΈ°λ€λ Έλ€κ° κ·Έκ³³μΌλ‘ κ°μ μ¬μ¬λ₯Ό λ°μ μλ μμ΅λλ€.
λͺ¨λ μ¬λμ΄ μ¬μ¬λ₯Ό λ°λλ° κ±Έλ¦¬λ μκ°μ μ΅μλ‘ νκ³ μΆμ΅λλ€.
μ κ΅μ¬μ¬λ₯Ό κΈ°λ€λ¦¬λ μ¬λ μ n, κ° μ¬μ¬κ΄μ΄ ν λͺ μ μ¬μ¬νλλ° κ±Έλ¦¬λ μκ°μ΄ λ΄κΈ΄ λ°°μ΄ timesκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, λͺ¨λ μ¬λμ΄ μ¬μ¬λ₯Ό λ°λλ° κ±Έλ¦¬λ μκ°μ μ΅μκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- μ κ΅μ¬μ¬λ₯Ό κΈ°λ€λ¦¬λ μ¬λμ 1λͺ μ΄μ 1,000,000,000λͺ μ΄νμ λλ€.
- κ° μ¬μ¬κ΄μ΄ ν λͺ μ μ¬μ¬νλλ° κ±Έλ¦¬λ μκ°μ 1λΆ μ΄μ 1,000,000,000λΆ μ΄νμ λλ€.
- μ¬μ¬κ΄μ 1λͺ μ΄μ 100,000λͺ μ΄νμ λλ€.
μ μΆλ ₯ μ
n | times | return |
6 | [7, 10] | 28 |
μ μΆλ ₯ μ μ€λͺ
κ°μ₯ 첫 λ μ¬λμ λ°λ‘ μ¬μ¬λ₯Ό λ°μΌλ¬ κ°λλ€.
7λΆμ΄ λμμ λ, 첫 λ²μ§Έ μ¬μ¬λκ° λΉκ³ 3λ²μ§Έ μ¬λμ΄ μ¬μ¬λ₯Ό λ°μ΅λλ€.
10λΆμ΄ λμμ λ, λ λ²μ§Έ μ¬μ¬λκ° λΉκ³ 4λ²μ§Έ μ¬λμ΄ μ¬μ¬λ₯Ό λ°μ΅λλ€.
14λΆμ΄ λμμ λ, 첫 λ²μ§Έ μ¬μ¬λκ° λΉκ³ 5λ²μ§Έ μ¬λμ΄ μ¬μ¬λ₯Ό λ°μ΅λλ€.
20λΆμ΄ λμμ λ, λ λ²μ§Έ μ¬μ¬λκ° λΉμ§λ§ 6λ²μ§Έ μ¬λμ΄ κ·Έκ³³μμ μ¬μ¬λ₯Ό λ°μ§ μκ³ 1λΆμ λ κΈ°λ€λ¦° νμ 첫 λ²μ§Έ μ¬μ¬λμμ μ¬μ¬λ₯Ό λ°μΌλ©΄ 28λΆμ λͺ¨λ μ¬λμ μ¬μ¬κ° λλ©λλ€.
λ΄ ν΄λ΅
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(int n, vector<int> times) {
long long answer = 0;
sort(times.begin(), times.end());
long long min_time = 1;
long long max_time = static_cast<long long>(times[times.size()-1]) * n;
while(min_time <= max_time)
{
// μ΅μ μκ°κ³Ό μ΅λ μκ°μ νκ· μκ°μ ꡬνλ€.
long long avg_time = (min_time+max_time)/2;
// νκ· μκ°λμ μ²λ¦¬ν μ μλ μ¬λμ μ
long long count = 0;
// κ° μ
κ΅ μ¬μ¬μμ΄ νκ· μκ°λμ μ²λ¦¬ν μ μλ μ¬λ μ κ³μ°
for(const auto& t : times)
{
count += avg_time / t;
}
// λκΈ°μλ³΄λ€ λ§μ μ νΉμ λκΈ°μ μλ§νΌμ μ²λ¦¬ ν μ μλ€λ©΄
if(count >= n)
{
// μ λ΅ μκ°μ νκ· μκ°μΌλ‘ μ€μ νλ€.
answer = avg_time;
// μ΅λ μκ°μ νμ¬ νκ· μκ°-1μΌλ‘ μ€μ νλ€.
max_time = avg_time-1;
}
// λκΈ°μ μ λ³΄λ€ μ μ μλ₯Ό μ²λ¦¬ν μ μλ€λ©΄
else
{
// μ΅μ μκ°μ νμ¬ νκ· μκ°+1λ‘ μ€μ νλ€.
min_time = avg_time+1;
}
}
return answer;
}
'π₯οΈ Study Note > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] level.3 - κ°μ₯ λ¨Ό λ Έλ(C++) (0) | 2023.05.15 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] level.3 - μ§κ²λ€λ¦¬ 건λκΈ° (C++) (0) | 2023.05.12 |
νλ‘κ·Έλλ¨Έμ€ / level.3 / λ±κ΅£κΈΈ(C++) (0) | 2023.05.09 |
[λ°±μ€] 2775λ² : λΆλ νμ₯μ΄ λ ν μΌ(C++) (0) | 2023.05.08 |
νλ‘κ·Έλλ¨Έμ€ / level.1 / 체μ‘볡(C++) (0) | 2023.05.07 |