ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

์ž„์˜์˜ 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));

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ