업다운 문제와 같다.
=> 코테에 자료가 1,000,000,000개 정도가 나오면 이진 탐색이라고 볼 수 있다.
배열로 구현 시 중간에 삽입, 삭제 시 선형시간이 걸리는 단점!
하지만 이진 탐색 트리는 추가, 삭제 모두 O(logn)시간이 걸린다!
이진 트리 요소 추가
요소 삭제
이진 탐색 트리의 문제점
=> AVL 트리, 레드 블랙 트리
코테에서는 삽입, 삭제가 이뤄지지 않는다면 구현이 쉬운 배열을 이용하는 것이 좋음!! 배열을 이용하는 경우가 훨씬 많을 것!!
AVL 트리는.. 참고로 데이터베이스를 배울 때 구현이 최종 과제 였는데, 엉망으로 제출했다고 한다..ㅋㅋㅋㅋㅋㅋ^^
const array = [1, 1, 5, 134, 400, 599, 1004, 2876, 8712];
function binarySearch(array, findValue){
let left = 0;
let right = array.length - 1;
let mid = Math.floor((left + right) / 2);
while(left <= right){
if(array[mid] === findValue)
return mid;
if(array[mid] < findValue)
left = mid + 1;
else
right = mid - 1;
mid = Math.floor((left + right) / 2);
}
return -1;
}
for(let i =0; i < array.length; i++){
console.log(binarySearch(array, array[i]));
} // 1 1 2 3 4 5 6 7 8
결정 문제
최솟값 구하기, 최적 구하기
프로그래머스 입국 심사 다시 혼자 식 세워서 풀어보기!!