문제
길이가 같은 두 개의 숫자 배열인 arr1과 arr2를 받는 JavaScript 함수를 작성해야 합니다.
우리 함수는 첫 번째 배열 arr1의 요소를 섞어서 최대 요소 수가 배열 arr2의 해당 요소보다 크도록 해야 합니다. 그러면 함수는 섞인 배열을 반환해야 합니다.
예를 들어 함수에 대한 입력이
인 경우입력
const arr1 = [3, 5, 12, 19]; const arr2 = [2, 9, 3, 12];
출력
const output = [3, 12, 5, 19];
출력 설명
arr1을 섞기 전에는 arr2보다 3개의 해당 요소가 더 많았지만 셔플된 배열에서는 4개의 요소가 모두 더 큽니다.
다음은 코드입니다:
예시
const arr1 = [3, 5, 12, 19]; const arr2 = [2, 9, 3, 12]; const maximiseArray = (arr1 = [], arr2 = []) => { arr1.sort((a, b) => b - a) const indexes = arr2.map((v, index) => index).sort((a, b) => arr2[b] - arr2[a]) const res = [] for(let i = 0; i < indexes.length; i++) { const index = indexes[i] res[index] = arr1[0] > arr2[index] ? arr1.shift() : arr1.pop() } return res } console.log(maximiseArray(arr1, arr2));
출력
[ 3, 12, 5, 19 ]