정수 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.
함수는 배열을 두 개의 하위 배열로 분할하여 두 하위 배열에 있는 요소의 합이 같도록 할 수 있는 방법이 있는지 여부를 결정해야 합니다. 요소를 하위 배열로 나누는 동안 원래 배열의 요소가 남아 있지 않은지 확인해야 합니다.
예를 들어 -
입력 배열이 -
인 경우const arr = [5, 3, 7, 4, 1, 8, 2, 6];
그러면 출력은 다음과 같아야 합니다. -
const output = true;
원하는 하위 배열이 [5, 3, 4, 6] 및 [7, 1, 8, 2]이고 합이 18이기 때문입니다.
예시
다음은 코드입니다 -
const arr = [5, 3, 7, 4, 1, 8, 2, 6]; const canPartition = (arr = []) => { const sum = arr.reduce((acc, val) => acc + val); if (sum % 2 !== 0){ return false; }; const target = sum / 2; const array = new Array(target + 1).fill(false); array[0] = true; for (const num of arr) { if (array[target - num]){ return true }; for (let i = target; i >= num; i--) { array[i] = array[i - num]; } } return false; }; console.log(canPartition(arr));
출력
다음은 콘솔 출력입니다 -
true