본문 바로가기
카테고리 없음

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

by 문자메일 2022. 7. 17.

 

target에 해당하는 값을 찾으면 1, 못 찾으면 0을 return 하는 방법으로 간결하게 개선한 코드

 

import java.util.*;

class Solution {
    // numbers : 2~20, value : 1~50
    // target = 1~1000
    
    int target;
    //int ansCount = 0;
    
    public int solution(int[] numbers, int target) {
        int numbersSize = numbers.length;
        this.target = target;

        //dfs(numbers, 0, 0);
        //return this.ansCount;
        
        return dfs(numbers, 0, 0);
    }
    
    private int dfs(int[] numbers, int index, int sum){
        if(numbers.length == index){
            if(sum == this.target){
                //this.ansCount++;
                return 1;
            }
            // ;
            return 0;
        }
        
        // dfs(numbers, index+1, sum + numbers[index]);
        // dfs(numbers, index+1, sum - numbers[index]);    

        return dfs(numbers, index+1, sum + numbers[index]) + dfs(numbers, index+1, sum - numbers[index]);
    }
}

 

 

 

처음에 풀었던 포맷

import java.util.*;

class Solution {
    // numbers : 2~20, value : 1~50
    // target = 1~1000
    
    int target;
    int ansCount = 0;
    
    public int solution(int[] numbers, int target) {
        int numbersSize = numbers.length;
        this.target = target;

        dfs(numbers, 0, 0);
        return this.ansCount;
    }
    
    private void dfs(int[] numbers, int index, int sum){
        if(numbers.length == index){
            if(sum == this.target){
                this.ansCount++;
            }
            return ;
        }
        
        dfs(numbers, index+1, sum + numbers[index]);
        dfs(numbers, index+1, sum - numbers[index]);    

        return;
    }
}

 

 

 

댓글