자두의 데브로그

[자바] 프로그래머스 타겟 넘버 본문

코딩테스트/Java

[자바] 프로그래머스 타겟 넘버

왕자두 2024. 10. 17. 18:36

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

 

프로그래머스

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

programmers.co.kr

 

내가 작성했던 블로그 보니까 과거에 파이썬으로 코테 준비했을 때의 내용만 있길래 자바로 다시 풀고 올린다.

거의 다 맞췄는데 무한루프 돌길래 이상해서 찾아보니 진짜 이상한 짓을 하고 있었다.

어차피 depth가 인덱스 역할을 해주고 있는 건데 for문으로 dfs 함수 안에서 또 numbers[i]번째의 값과 더하거나 빼는 방식을 추가해버려서 처음에는 틀렸었다. 그리고 return의 위치!!!! return은 depth랑 numbers 배열의 원소 개수와 같아지면 무조건 return을 해야되는데 아무 생각 없이 target이랑 x가 같을 때만 return하게 코드를 작성해서 계속 틀렸었다. 그러나 이 부분 수정하니 바로 정답!

다른 날 다시 풀어보자 ^^

 

class Solution {
    public static int answer = 0;
    public int solution(int[] numbers, int target) {
        dfs(numbers, 0, 0, target);
        return answer;
    }
    
    public static void dfs(int[] numbers, int depth, int x, int target){
        if(depth == numbers.length){
            if(target == x){
                answer++;
            }
            return;
        }

        dfs(numbers, depth+1, x+numbers[depth], target);
        dfs(numbers, depth+1, x-numbers[depth], target);
    }
}