프로그래머스: 타겟 넘버

공룡개발자·2022년 3월 30일
0


✍ 나의 풀이

function solution(numbers, target) {
    let answer = 0;
	
  	dfs(0,0)
  
    function dfs(depth, sum){
        if(depth === numbers.length){
          if(sum === target){
              answer++
          }
          return
        }
        // 동시 다발적으로 수행
        dfs(depth + 1, sum + numbers[depth])
        dfs(depth + 1, sum - numbers[depth])
    }
    return answer;
}

처음 접하는 재귀함수였는데, 두개나 들어가서 이해하는데 어려움이 있었다.
이제껏 단방향 코드만 짜다가 동시다발적으로 터지는 코드를 접하니 컴퓨터의 위대함을 깨닫는다..

dfs(0,0)을 신호탄으로 삼아, 깊이가 5에 다달았을 때 target과 값이 같다면 answer++해주고, 다르다면 그자리에서 함수를 끝내버린다.

profile
공룡의 발자취

0개의 댓글