https://school.programmers.co.kr/learn/courses/30/lessons/43165
function solution(numbers, target) {
let answer = 0;
const dfs = (cur, index) => {
if (index === numbers.length) {
cur === target && answer++;
return;
}
dfs(cur + numbers[index], index + 1);
dfs(cur - numbers[index], index + 1);
}
dfs(0,0);
return answer;
}
DFS의 개념을 잘몰라서 처음에는 엄청 헤메다가 풀은 문제다. 알고리즘 문제를 풀기전에 개념정리는 필수라는걸 느끼게 한 문제이다.
DFS 알고리즘(깊이 우선 탐색 알고리즘)
그래프나 트리와 같은 자료 구조를 탐색하는 알고리즘 중 하나로 특정 노드에서 시작하여 가능한 한 깊숙한 부분까지 탐색한 후, 더 이상 갈 곳이 없을 때 다시 이전 단계로 돌아가서 다른 경로로 탐색하는 방식이다.스택이나 재귀함수를 주로 사용한다.