binary Search를 활용한 배열의 k번째 수 찾기 Javascript

cptkuk91·2022년 9월 3일
1

Algorithm

목록 보기
86/161

문제

길이가 m, n이고 오름차순으로 정렬되어 있는 자연수 배열들을 입력받아 전체 요소 중 k번째 요소를 리턴해야 합니다.

주의 사항

  • 두 배열의 길이의 합은 1,000,000 이하입니다.
  • 어떤 배열 arr의 k번째 요소는 arr[k-1]을 의미합니다.

입출력 예시

let arr1 = [1, 4, 8, 10];
let arr2 = [2, 3, 5, 9];
let result = getItemFromTwoSortedArrays(arr1, arr2, 6);
console.log(result); // --> 8

arr1 = [1, 1, 2, 10];
arr2 = [3, 3];
result = getItemFromTwoSortedArrays(arr1, arr2, 4);
console.log(result); // --> 3

풀이

const getItemFromTwoSortedArrays = function (arr1, arr2, k) {
	let count = 1;
    let left = 0;
    let right = 0;
    let result = 0;
    
    while(count <= k){
    	if(arr1[left] < arr2[right]){
        	result = arr1[left];
            left++;
        } else {
        	result = arr2[right];
            right++;
        }
        count++;
    }
    return result;
};

시간 복잡도를 생각했을 때, 살짝 아쉬움이 남는 풀이법이지만, 현실적으로 제가 생각할 수 있는 부분은 여기까지였습니다. 기존 binary Search를 참고해 풀었으며, 상단의 count, result 선언부에서 어떤식으로 접근해야 할지에 대해서 많은 생각이 필요했습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글