문제
길이가 같은 두 개의 숫자 배열인 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 ]