길이가 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 선언부에서 어떤식으로 접근해야 할지에 대해서 많은 생각이 필요했습니다.