Algorithm/프로그래머스

[프로그래머스] 타겟 넘버(자바) / DFS

미스터로즈 2021. 10. 22. 15:48

문제

 

제한사항

 

문제풀이

class Solution {
    static int answer;
    public void dfs(int[] numbers,int target,int idx,int sum){
        if(idx == numbers.length){   
            if(sum == target) answer++;
            return;
        }
        
        sum+=numbers[idx];
        dfs(numbers,target,idx+1,sum);
        sum-=numbers[idx]*2;
        dfs(numbers,target,idx+1,sum);
        
    }
    
    public int solution(int[] numbers, int target) {
        answer = 0;
        
        dfs(numbers,target,0,0);
        
        return answer;
    }
}

 

※ 내 생각

이 문제는 DFS를 이용하는 문제입니다.
각각의 값에 대해서 더해주고,
빼주는 과정을 DFS를 이용해서 구현하면 됩니다.

DFS에서 numbers에 대한 값을 한번 더했으므로,
*2 만큼 빼줘야 그 값에 대해 뺀 값으로 처리가 가능합니다.