μ κ΅μ¬μ¬ (with.Java)
μ κ΅μ¬μ¬ (with.Java) μ λνμ¬ μμλ³Έ κΈμ λλ€.
μ½λ© ν μ€νΈ λ¬Έμ λ₯Ό νλ©°, νμλ λ¬Έμ μ λν νκ³ μ λ€λ₯Έ νμ΄ λ°©λ²μ μμ보며, μμκ°κ³ μ ν©λλ€.
λ¬Έμ μ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€.
λ¬Έμ
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 |
λ¬Έμ νμ΄
import java.util.Arrays;
class Solution {
public long solution(int n, int[] times) {
long answer = 0;
Arrays.sort(times);
long left = 0;
long right = times[times.length - 1] * (long)n;
while(left <= right){
long mid = (left + right) / 2;
long test_num = 0;
for(int i = 0; i < times.length; i++){
test_num += mid / times[i];
}
if(test_num < n){
left = mid + 1;
}else{
answer = mid;
right = mid - 1;
}
}
return answer;
}
}
νμ΄ μ€λͺ
μ£Όμ΄μ§ μ¬μ¬κ΄λ€μ΄ μ£Όμ΄μ§ μκ° λ΄μ nλͺ μ μ¬λμ μ¬μ¬ν μ μλ μ΅μ μκ°μ ꡬνλ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
μ΄λ₯Ό μν΄ μ΄μ§ νμ μκ³ λ¦¬μ¦μ μ¬μ©ν©λλ€.
λ¨Όμ , μ£Όμ΄μ§ μ¬μ¬ μκ° λ°°μ΄μΈ timesλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν©λλ€.
μ΄λ μ΅μ μκ°κ³Ό μ΅λ μκ°μ μ€μ νκΈ° μν΄ νμν λ¨κ³μ λλ€.
μ΄ν left λ³μλ 0μΌλ‘, right λ³μλ κ°μ₯ μ€λ 걸리λ μ¬μ¬κ΄μ μκ°(times λ°°μ΄μ λ§μ§λ§ μμ)κ³Ό nμ κ³±ν κ°μΌλ‘ μ€μ ν©λλ€.
μ΄λ μ¬μ¬ μκ°μ΄ μ΅λλ‘ κ±Έλ¦΄ κ²½μ°λ₯Ό κ°μ ν κ²μ λλ€.
μ΄μ§ νμμ μννλ©΄μ, mid κ°μ leftμ rightμ μ€κ°κ°μΌλ‘ μ€μ ν©λλ€.
midλ νμ¬μ νκ· μκ°μΌλ‘ κ°μ£Όλλ©°, κ° μ¬μ¬κ΄μ΄ μ΄ μκ° λ΄μ λͺ λͺ μ μ¬μ¬ν μ μλμ§λ₯Ό κ³μ°ν©λλ€.
μ΄λ₯Ό μν΄ test_num λ³μλ₯Ό μ¬μ©νμ¬, λͺ¨λ μ¬μ¬κ΄λ€μ΄ mid μκ° λμ μ¬μ¬ν μ μλ μ΄ μΈμ μλ₯Ό ꡬν©λλ€.
test_num κ°μ midλ₯Ό κ° μ¬μ¬κ΄μ μ¬μ¬ μκ°μΌλ‘ λλ κ°μ λͺ¨λ λνμ¬ κ³μ°ν©λλ€.
μ΄ν, test_numμ΄ nλ³΄λ€ μλ€λ©΄, μ΄λ νμ¬ μκ°(mid) λ΄μ λͺ¨λ μ¬λμ μ¬μ¬ν μ μμμ μλ―Ένλ―λ‘, leftλ₯Ό mid + 1λ‘ μ€μ νμ¬ λ λ§μ μκ°μ ν λΉν©λλ€.
λ°λλ‘, test_numμ΄ n μ΄μμ΄λΌλ©΄, μ΄λ νμ¬ μκ°(mid) λ΄μ λͺ¨λ μ¬λμ μ¬μ¬ν μ μμμ μλ―Ένλ―λ‘, answerλ₯Ό midλ‘ μ€μ νκ³ , rightλ₯Ό mid - 1λ‘ μ€μ νμ¬ λ μ μ μκ°μ ν λΉν΄λ κ°λ₯νμ§ νμΈν©λλ€.
μ΄ κ³Όμ μ leftκ° rightλ³΄λ€ μ»€μ§ λκΉμ§ λ°λ³΅ν©λλ€.
μ΅μ’ μ μΌλ‘ answerμλ λͺ¨λ μ¬λμ μ¬μ¬ν μ μλ μ΅μ μκ°μ΄ μ μ₯λ©λλ€.
μ΄ μκ³ λ¦¬μ¦μ μ΄μ§ νμμ μ¬μ©νμ¬ μκ° λ³΅μ‘λλ₯Ό μ€μ΄κ³ , ν¨μ¨μ μΌλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.