본문 바로가기

알고리즘

프로그래머스 - 타겟 넘버(Java)

dfs 문제입니다.

dfs를 통해 모든 경우의 수. 즉, 완전 탐색을 하면서 조건에 맞는 것을 찾으면 됩니다,

 

[구현 코드]

class Solution {
    private static int cnt = 0;

    public static int solution(int[] numbers, int target) {

        dfs(0, numbers, target, 0);

        return cnt;
    }

    private static void dfs(int number, int[] numbers, int target, int depth) {
        if (depth == numbers.length) {
            if (number == target) {
                cnt++;
            }
            return;
        }

        // +일 때
        dfs(number+numbers[depth], numbers, target, depth+1);
        
        // -일 때
        dfs(number-numbers[depth], numbers, target, depth+1);
    }
}