프로그래머스 알고리즘(타겟 넘버)

Hyor·2023년 10월 18일
0
post-custom-banner

프로그래머스 알고리즘(타겟 넘버)

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;
}

후기

어느 회사 코딩테스트의에서 비슷한 류에 문제가 나왔을때 풀지 못했었는데 지금 다시 이렇게 풀어보니 수열을 만들고 충족되는 요건일 때 결과값을 증가시키는 식으로 풀어내면 되는것이었다

profile
개발 노트
post-custom-banner

0개의 댓글