알고리즘/프로그래머스

[프로그래머스] 타겟 넘버 JavaScript (Lv.2)

lheunoia 2022. 2. 9. 18:48

 

 

 

 

 

https://programmers.co.kr/learn/courses/30/lessons/43165?language=javascript

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수

programmers.co.kr

 

이번 문제는 DFS 문제였습니다.

 

 

 

 

 

📝 문제 풀이

1. numbers 배열의 모든 음이 아닌 정수는 더하거나 뺄 수 있음 ← 재귀 함수 2번 나눠서 호출

2. numbers 배열의 정수들의 순서를 바꾸면 안 됨 (인덱스는 1씩 증가)

3. 인덱스가 numbers 배열의 길이와 같다면 •••

    (1) sum === target 이라면 answer 1 증가

    (2) 그렇지 않다면 해당 재귀 종료

 

 

 

 

 

👩🏻‍💻 Javascript 코드

function solution(numbers, target) {
    let answer = 0;
    
    dfs(0, 0);
    function dfs(idx, sum) {
        if (idx === numbers.length) {
            if (sum === target) {
                answer += 1; 
            }
            return;
        }
        
        dfs(idx + 1, sum + numbers[idx]);
        dfs(idx + 1, sum - numbers[idx]);
    }
    
    return answer;
}

 

프로그래머스 - 결과 화면

 

 

 

 

반응형