배열의 내용은 한가지 원소마다 2가지 경우의수가 있다. 마이너스가 되는 경우와 플러스가 되는 경우인데 이 부분을 전부 다 해보면 된다. 그래서 목표로 하는 숫자와 같아지면 경우의 수 한개를 늘려주면 된다.
private static void dfs(int[] numbers, int depth, int target, int sum) {
if (numbers.length == depth) {
if (target == sum) {
answer++;
}
return;
}
dfs(numbers, depth + 1, target, sum + numbers[depth]);
dfs(numbers, depth + 1, target, sum - numbers[depth]);
}