타겟 넘버

han.user();·2023년 4월 17일
0

프로그래머스

목록 보기
81/87
post-thumbnail

class Solution {
    int answer; // 정답을 저장할 변수
    public int solution(int[] numbers, int target) { 
        answer = 0; // 그릇
        
        dfs(0, 0, numbers, target); // DFS 알고리즘 실행
        
        return answer; // 결과 반환
    }
    void dfs(int n, int sum, int[] numbers, int target) {
        // 1. 탈출 조건: 모든 숫자를 더하거나 빼서 target을 만든 경우
        if(n == numbers.length) {
            if(sum == target)
                answer++; // 정답 수 증가
            return; // 리턴하여 호출한 함수로 돌아감
        }
        // 2. 수행 동작: 현재 위치의 수를 더하거나 빼는 두 가지 경우를 모두 재귀호출함
        dfs(n + 1, sum + numbers[n], numbers, target); // 현재 위치의 수를 더한 경우
        dfs(n + 1, sum - numbers[n], numbers, target); // 현재 위치의 수를 뺀 경우
    }
}
  • 이 코드는 주어진 숫자들을 이용하여 주어진 타겟을 만들 수 있는 경우의 수를 찾는 문제를 해결하는 함수입니다.
  • 함수 내에서는 DFS(깊이 우선 탐색) 알고리즘을 이용하여 가능한 모든 경우를 찾습니다.
profile
I'm still hungry.

0개의 댓글