코딩테스트-알고리즘/프로그래머스

[프로그래머스/Lv.2] 타겟 넘버

닉네임생각즁 2024. 1. 12. 23:50

 

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    int answer = 0;
    
    public int solution(int[] numbers, int target) {
        int sum = 0;
        int depth = 0;
        
        dfs(numbers, target, 0, 0);
        
        return answer;
    }

    void dfs(int[] numbers, int target, int depth, int sum) {
        if(depth == numbers.length) {
            if(target == sum) {
                answer++;
            } return;
        } 
        
        else {
            dfs(numbers, target, depth+1, sum+numbers[depth]);
            dfs(numbers, target, depth+1, sum-numbers[depth]);   
        }
    }
}

 

 

 

드디어 처음으로 dfs 문제를 성공했다

강의 보고 여러 문제 찾아보고 하면서 dfs가 어떤순서로 동작하는지, 문제를 어떻게 풀어야할지는 이해가 됐지만 이걸 직접 코드로 구현하려고 하면 전혀 써지지가 않아서 너무너무 힘들었다

 

앞으로 dfs랑 많이 친해지고싶다