class Solution {
int answer = 0;
public int solution(int[] numbers, int target) {
getDfs(numbers, numbers[0], 0, target);
getDfs(numbers, -1 * numbers[0], 0, target);
return answer;
}
public void getDfs(int[] numbers, int num, int depth, int target) {
if(depth == numbers.length - 1) {
if(num == target) {
answer++;
}
return;
}
getDfs(numbers, num + numbers[depth + 1], depth + 1, target);
getDfs(numbers, num - numbers[depth + 1], depth + 1, target);
}
}
재귀형식으로 탐색 풀이 답변
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (7.37ms, 53.3MB)
테스트 2 〉 통과 (12.46ms, 52MB)
테스트 3 〉 통과 (0.21ms, 51.8MB)
테스트 4 〉 통과 (0.31ms, 52.1MB)
테스트 5 〉 통과 (2.14ms, 52.8MB)
테스트 6 〉 통과 (0.35ms, 53.4MB)
테스트 7 〉 통과 (0.21ms, 52.2MB)
테스트 8 〉 통과 (0.37ms, 53MB)
고민 끝에 다른 분의 답변을 참조,,,
def solution(numbers, target):
if not numbers and target == 0 :
return 1
elif not numbers:
return 0
else:
return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (329.38ms, 10.2MB)
테스트 2 〉 통과 (326.93ms, 10.2MB)
테스트 3 〉 통과 (0.55ms, 10.2MB)
테스트 4 〉 통과 (1.63ms, 10.2MB)
테스트 5 〉 통과 (10.80ms, 10.3MB)
테스트 6 〉 통과 (1.04ms, 10.3MB)
테스트 7 〉 통과 (0.59ms, 10.2MB)
테스트 8 〉 통과 (3.03ms, 10.2MB)