본문 바로가기

today I learned/algorithm

[DFS] 타겟넘버

문제

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

 

프로그래머스

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

programmers.co.kr


풀이

class Solution {
    int cnt = 0;
    public int solution(int[] numbers, int target) {
        int answer = 0;
        dfs(numbers, target, 0, 0);
        answer = cnt;
        return answer;
    }
    
    public void dfs(int[] numbers, int target, int depth, int result){
        if(depth == numbers.length){
            if(target == result){
                cnt += 1; 
            }
            return ;
        }
        int plus = result + numbers[depth];
        int minus = result - numbers[depth];
        dfs(numbers, target, depth + 1, plus);
        dfs(numbers, target, depth + 1, minus);
        
    }
}

 

 

풀이

dfs로 풀되, 헷갈렸던 부분은 어떤 것을 노드로 만드느냐에 대한 부분이었다.

덧셈 / 뺄셈한 값에 대해 재귀문을 걸어 타겟에 가까워졌는지를 본다.

'today I learned > algorithm' 카테고리의 다른 글

[해시] 전화번호 목록  (0) 2023.10.05
[해시] 폰켄몬  (0) 2023.10.05