https://programmers.co.kr/learn/courses/30/lessons/43165
numbers의 숫자를 더하고 빼서 target숫자가 되는 경우의수가 몇개인지 구하는 문제
입력: [numbers, target]
- numbers: 2이상 20이하의 배열
- 각 요소는 1이상 50이하인 자연수
- target: 1이상 1000 이하인 자연수
출력: 경우의수가 몇개인지 출력
dfs를 사용해 간단하게 풀었다.
모든 배열이 +
, -
둘중의 하나의 경우가 있으므로
dfs 함수에서 해당 경우에 대해 재귀적으로 함수를 호출해 주었고
더한값이 target
이 되거나 i
가 numbers.length
에 도달하면 return하게 해주었다.
function solution(numbers, target) {
let result = 0;
function dfs(sum, i) {
if (i < numbers.length) {
dfs(sum + numbers[i], i+1);
dfs(sum - numbers[i], i+1);
}else {
if (sum === target) {
result++;
}
}
}
dfs(0, 0);
return result;
}