
문제 설명
나의 풀이
- 전체의 arr을 한번씩 가야됨
- 갈수 있는 경우의 수를 확인 +arr[i] ,-arr[i]
- 그럼 더해서 갈수 있겠구나! 재귀로 풀어야되겠다.
const solution = function (arr, numb) {
let answer=0
// 그냥 dfs 으로 풀어도 되고 아니면 그냥 재귀로 풀어도 되는 문제
const gogo_ = function(n,go){
if(n>=arr.length){
// 여기에서 되면? +1 하는거
if(go==numb){
answer+=1;
}
return;
}
// 이거 둘
gogo_(n+1,go+arr[n])
gogo_(n+1,go-arr[n])
}
gogo_(0,0)
return answer;
}
다른 사람 풀이
function solution(numbers, target) {
let answer = 0;
const length = numbers.length;
function dfs(count, sum) {
if (count === length) {
if (target === sum) {
answer++;
}
return;
}
dfs(count + 1, sum + numbers[count]);
dfs(count + 1, sum - numbers[count]);
}
dfs(0, 0);
return answer;
}
출처: https://yong-nyong.tistory.com/41 [💻용뇽 개발 노트💻:티스토리]
내코드랑 비교