자연수로 이뤄진 집합을 두 부분 집합으로 분리하고 각 부분 집합의 합이 서로 같은 경우가 존재할 때, "YES"를 출력, 다를 때 "NO"를 출력하라.
int n // (자연수 갯수)
,
int arr[] // (n개 만큼 자연수 입력)
,
int L // (현재 레벨)
,
int sum // (현재 레벨의 sum 값)
,
int total // (arr 배열 값을 모두 더한 값)
,
boolean flag // (total - sum = sum일 때 true)
String answer // 정답을 반환할 변수
DFS() 메서드 // 핵심 로직
2번에 대한 알고리즘을 그림으로 설명
public void DFS(int L, int sum){
if(L == n){
if(total - sum = sum){
answer = "YES";
flag = true;
}
}else{
DFS(L+1, sum+arr[L]);
DFS(L+1, sum);
}
}