class Solution {
static int result = 0;
public void dfs(int[] numbers, int depth, int sum, int target) {
if (depth == numbers.length) {
if (sum == target) {
result++;
} else return;
} else {
dfs(numbers, depth+1, sum+numbers[depth], target); // 숫자를 더하는 경우
dfs(numbers, depth+1, sum-numbers[depth], target); // 숫자를 빼는 경우
}
}
public int solution(int[] numbers, int target) {
dfs(numbers, 0, 0, target);
return result;
}
}
DFS 방식 이용
numbers에 있는 숫자들을 더하고 빼는 2가지 경우로 뻗어나감
-> numbers에 있는 모든 숫자들을 다 사용하면 target과 비교