μκ³ λ¦¬μ¦/νκ·Έ λ³ νμ΄
μ΄λΆνμ
choi95
2021. 7. 25. 12:57
λ¬Έμ
μμμ Nκ°μ μ«μκ° μ λ ₯μΌλ‘ μ£Όμ΄μ§λλ€. Nκ°μ μλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν λ€μ Nκ°μ μ μ€ ν κ°μ μμΈ Mμ΄ μ£Όμ΄μ§λ©΄μ΄λΆκ²μμΌλ‘ Mμ΄ μ λ ¬λ μνμμ λͺ λ²μ§Έμ μλμ§ κ΅¬νλ νλ‘κ·Έλ¨μ μμ±νμΈμ.(λ¨ μ€λ³΅κ°μ μ‘΄μ¬νμ§ μμ΅λλ€)
μ½λ
function solution(target, arr) {
let answer = 0;
arr.sort((a, b) => {return a - b});
let mid = Math.floor(arr.length/2);
while(mid !== 0) {
if(target === arr[mid]) {
answer = mid + 1;
break;
} else {
mid = Math.floor(mid/2);
}
}
return answer;
}
let arr = [23, 87, 65, 12, 57, 32, 99, 81]
console.log(solution(32, arr));
μ€λ΅
μ΄ λ¬Έμ μμλ μ²μ mid κ°μ΄ target κ°λ³΄λ€ μ»ΈκΈ° λλ¬Έμ μ 체 λ°°μ΄μ κΈΈμ΄μ λ°μΌλ‘ μͺΌκ°μ μΌμͺ½ ꡬκ°μ νμνλ μ λ°©λ²μΌλ‘νλ Έμ§λ§ λ§μ½ midκ°μ΄ target κ°λ³΄λ€ μμ κ²½μ°μλ μ€λ₯Έμͺ½ ꡬκ°μ νμν΄μΌ νκΈ° λλ¬Έμ μμ νμ΄λ μ³μ§ λͺ»νλ€.
μ΄λΆ νμ(Binary Search)
- μ΄λΆ νμμ μ£Όμ 쑰건: μ°Ύκ³ μ νλ λ°μ΄ν°κ° μ μ₯λ λ°°μ΄μ μ λ ¬λμ΄ μμ΄μΌ ν¨
- μ²μ μ€κ°μ κ°μ μμμ κ°μΌλ‘ μ ννμ¬, κ·Έ κ°κ³Ό μ°Ύκ³ μ νλ κ°μ λμ λΉκ΅
- λμ λΉκ΅ ν, νμ λ²μλ₯Ό μ λ°μ© μ€μ¬κ°λ©° μ°Ύμκ°
μ½λ
function solution(target, arr) {
let answer = 0;
arr.sort((a, b) => {return a - b});
let lt = 0; //μΌμͺ½ ꡬκ°
let rt = arr.length - 1; //μ€λ₯Έμͺ½ ꡬκ°
while(lt <= rt) {
let mid = Math.floor((lt + rt)/2);
if(arr[mid] === target) {
answer = mid + 1;
break;
}
else if(arr[mid] > target) rt = mid - 1; //μ€κ°κ°μ΄ target κ°λ³΄λ€ ν΄ κ²½μ°_μ€λ₯Έμͺ½ ꡬκ°μ λ μ΄μ νμΈν νμκ° μμ
else lt = mid + 1; //μ€κ°κ°μ΄ target κ°λ³΄λ€ μμ κ²½μ°_μΌμͺ½ ꡬκ°μ λ μ΄μ νμΈν νμκ° μμ
}
return answer;
}
let arr = [23, 87, 65, 12, 57, 32, 99, 81]
console.log(solution(32, arr));