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;
}
}
댓글