문제
첫 번째와 두 번째 인수로 두 개의 숫자 배열 arr1과 arr2를 사용하는 JavaScript 함수를 작성해야 합니다.
arr1과 arr2에 있는 요소의 합이 다릅니다. 우리의 함수는 첫 번째 배열에서 하나의 요소를 선택하고 두 번째 배열에 밀어넣고 두 번째 배열에서 하나의 요소를 선택하고 두 배열의 요소 합이 같아지도록 첫 번째 배열에 밀어넣어야 합니다. 이 두 요소의 배열을 반환해야 합니다.
예를 들어 함수에 대한 입력이
인 경우입력
const arr1 = [1, 2, 5]; const arr2 = [2, 4];
출력
const output = [5, 4];
출력 설명
arr1에서 5를 제거하고 arr2로 푸시하고 arr2에서 4를 제거하고 arr1로 푸시하면 두 배열의 합이 같을 것이기 때문입니다(7).
다음은 코드입니다:
예시
const arr1 = [1, 2, 5]; const arr2 = [2, 4]; const balanceArrays = (arr1 = [], arr2 = []) => { const sumA = arr1.reduce((acc, v) => acc + v, 0) const sumB = arr2.reduce((acc, v) => acc + v, 0) const difference = (sumA + sumB) / 2 - sumA const map = arr2.reduce((acc, v) => { acc[v] = true return acc }, {}) for(let i = 0; i < arr1.length; i++) { if(map[arr1[i] + difference] === true) { return [arr1[i], arr1[i] + difference] } } return [] }; console.log(balanceArrays(arr1, arr2));
출력
[5, 4]