4번의 부분집합 구하기를 이용해서 코드를 구현해보았습니다.
반례나 고칠 부분이 있다면 조언 부탁드립니다!!
function solution(arr){
let answer="NO", flag=0;
let sum = arr.reduce((a,b)=>a+b);
let ch = Array.from({length:arr.length+1}, ()=>0);
function dfs(n) {
if(flag) return;
if(n === arr.length) {
let arr1 = [];
for(let i = 0; i < arr.length; i++) {
if(ch[i] === 1) arr1.push(arr[i]);
}
if(arr1.length > 0) {
let arr1_sum = arr1.reduce((a,b)=>a+b);
if(arr1_sum === sum - arr1_sum) {
answer = "YES";
flag = 1
}
}
} else {
ch[n] = 1;
dfs(n+1);
ch[n] = 0;
dfs(n+1);
}
}
dfs(0);
return answer;
}
let arr=[1, 3, 5, 6, 7, 10];
console.log(solution(arr));