https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=javascript
function solution(numbers, target) {
let answer = 0;
const operators = ["+", "-"];
const visitedSet = new Set();
const dfs = (nums, cal, index) => {
if (nums.length <= index) {
if (!visitedSet.has(nums)) {
let result = 0;
for (let i = 0; i < nums.length; i += 2) {
const currentOperator = nums[i];
const currentValue = nums[i + 1];
if (currentOperator === "+") {
result += currentValue;
} else {
result -= currentValue;
}
}
if (result === target) {
answer++;
}
}
visitedSet.add(nums);
return;
}
const newExpression = nums.concat();
newExpression.splice(index, 0, cal);
operators.forEach((cal) => dfs(newExpression, cal, index + 2));
};
operators.forEach((cal) => dfs(numbers, cal, 0));
return answer;
}
어느 회사 코딩테스트의에서 비슷한 류에 문제가 나왔을때 풀지 못했었는데 지금 다시 이렇게 풀어보니 수열을 만들고 충족되는 요건일 때 결과값을 증가시키는 식으로 풀어내면 되는것이었다