[Refresh ! 코딩 테스트 / js] 타켓넘버

정대만·2025년 1월 9일

문제 설명

나의 풀이

  • 전체의 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 [💻용뇽 개발 노트💻:티스토리]

내코드랑 비교

  • 나는 if 문을 2번을 사용함 <- 빼도 됨
profile
안녕하세요

0개의 댓글