정수 배열을 유일한 인수로 취하는 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