function solution(numbers, target) {
const stack = [...numbers];
const dist = Array.from(new Array(numbers.length), () => []);
const init = 0;
let index = numbers.length - 1;
while (stack.length) {
const stackPop = stack.pop();
if (index === numbers.length - 1) {
dist[index].push(init + stackPop);
dist[index].push(init - stackPop);
} else {
for (let i of dist[index + 1]) {
dist[index].push(i + stackPop);
dist[index].push(i - stackPop);
}
}
index = index - 1;
}
return dist[0].filter((v) => v === target).length;
}
=> 대표적인 DFS문제이다. 배열을 탐색하면서 모든 결과를 dist에 저장한다!