코플릿/toyproblem

toy problem 10

테오구 2021. 10. 28. 22:45
728x90

문제

오름차순 정렬된 정수의 배열(arr)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다.

입력

let output = binarySearch([0, 1, 2, 3, 4, 5, 6], 2);
console.log(output); // --> 2

output = binarySearch([4, 5, 6, 9], 100);
console.log(output); // --> -1

 

 

const binarySearch = function (arr, target) {
  // TODO : 여기에 코드를 작성합니다.
  let low = 0 // 첫번째 인덱스
  let high = arr.length - 1 // 마지막 인덱스

  while(low <= high){
    let mid = Math.floor((low + high) / 2) //중간값
    if(arr[mid] === target){
      return mid
    }else if(arr[mid] < target){ //target의 중간값보다 크면
      low = mid + 1 // low를 업데이트 해주고 while문을 다시 돌아가게 함
      // [0,1,2,3,4,5] 중 4인 경우 mid는 2 low는 0 -> 3으로 업데이트 된다.
    }else{
      high = mid - 1// high를 업데이트 해주고 while문을 다시 돌아가게 함
      // [0,1,2,3,4,5] 중 1인 경우 mid는 2 high는 5 -> 1으로 업데이트 된다.
    }
  }
  return -1
};
728x90

'코플릿 > toyproblem' 카테고리의 다른 글

toy problem 13  (0) 2021.10.29
toy problem 12  (0) 2021.10.29
toy problem 11  (0) 2021.10.28
toy problem 08  (0) 2021.10.28
toy problem 07  (0) 2021.10.28