알고리즘/프로그래머스

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

092 2024. 3. 28. 17:05
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/43165
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 내용 : 아래 더보기

 

정답 코드 ) 재귀 함수 사용
class Solution {
    public int solution(int[] numbers, int target) {
        return sumCnt(numbers, target, 0, 0);
    }
    
    // 재귀적으로 숫자를 더하거나 빼면서 타겟 넘버를 만드는 경우의 수를 계산하는 메서드
    int sumCnt(final int[] numbers, final int target, int index, int sum) {
        // base case : 모든 숫자를 다 사용했을 때
        if(index == numbers.length) {
            if(sum == target) return 1; // 경우의 수
            else return 0;
        }
        
        return sumCnt(numbers, target, index + 1, sum + numbers[index]) 
            + sumCnt(numbers, target, index + 1, sum - numbers[index]);
    }
}