숫자 배열의 부분집합 구하기.
function sol(arr){
let answer;
function DFS(L,sum){
let answer ="NO",
let flag=0;
let total = arr.reduce((a,b)=>a+b,0);
let n =arr.length;
function DFS(L,sum){
//python 은 프로그램 자체를 종료하는 exit 이 있음. 왠만하면 쓰지말기.
//스택에 남아있는애들도 다 종료 시키기. flag 가 0일때만 가지치기.
if(flag) return;
//노드 끝까지 순회 한 후에 합계를 비교한다.
if(L===n){
if((total-sum)===sum)
{answer="YES";
flag=1;}
}
else{
//depts 를 +1씩 증가 (가지치기)하면서, sum 을 넘겨준다. (처음부터 다 더해야하는 수고로움을 덜어주기)
//arr[L] 에 해당하는 숫자를 포함하는 경우
DFS(L+1,sum+arr[L]);
//포함하지 않는경우
DFS(L+1,sum);
}
}
DFS(0,0)
return answer;
}
}