기록하는 개발자

[프로그래머스][JAVA] 타겟 넘버 본문

Algorithm

[프로그래머스][JAVA] 타겟 넘버

밍맹030 2021. 6. 11. 22:24
728x90

class Solution {
    static int answer;
    
    /* index : 몇 번째 인덱스인지, sum : index까지 총 더한 값 */
    public void dfs(int[] numbers,int target,int index,int sum){
        /* numbers 배열을 끝까지 탐색한 경우 */
        if(index == numbers.length){ 
            if(sum == target)    // 총합이 target과 같다면
                answer++;    // 정답 개수 1 증가
            return;
        }   
        /*배열 탐색
            -1) 다음 인덱스(index+1)에서 양수인 numbers[index]를 그대로 더하기
            -2) 다음 인덱스(index+1)에서 음수인 numbers[index]를 더하기 */
        else {   
            dfs(numbers,target,index+1,sum+numbers[index]);
            dfs(numbers,target,index+1,sum+(-1 * numbers[index]));       
        }
    }
    
    public int solution(int[] numbers, int target) {
        answer = 0;
        dfs(numbers,target,0,0);
        return answer;
    }
}
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/43165
728x90