2022이전/알고리즘(하루에하나씩!)

타겟 넘버(깊이/너비 우선 탐색(DFS/BFS))

바로퇴장 2020. 3. 18. 16:40

https://programmers.co.kr/learn/courses/30/lessons/43165

 

프로그래머스

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

programmers.co.kr

class Solution {
    int answer = 0;
    public int solution(int[] numbers, int target) {
        Cal(numbers, target, 0, 0);
        return answer;
    }
    public void Cal(int[] number, int target, int temp, int count){
        int plus = temp;
        int minus = temp;
        //마지막에 도달 햇을 때
        if(count == number.length){
            if(temp == target){
                answer++;    
            }
            else{
                
            }
        }
        //마지막에 도달 하지 못했을 때
        else{
            plus = temp + number[count];
            minus = temp - number[count];
            Cal(number, target, plus, count+1);
            Cal(number, target ,minus, count+1);
        }
    }
}

다른 사람은 풀이를 보면 노드를 이용하거나 BFS 개념을 이용했지만, 재귀함수 하나로 끝나는데? 띠용 물로 count라는 index 개념을 포함하고 있어 결국 이 코드도 BFS 개념이 들어가긴 했지만,,,,