입력 배열 노드를 순차로 탐색 하면서 매 탐색시 양갈래(지나온 노드들의 sum에서 현재노드를 +하는 경우, -하는경우) 로 탐색하며 재귀호출 하여 마지막 노드에 도달했을때 노드들의 sum이 타겟 넘버와 같으면 타겟 적중을 +1 한다.
class Solution {
public int solution(int[] numbers, int target) {
int answer = 0;
answer = calcNum(numbers, 0, target, 0);
return answer;
}
public static int calcNum(int[] source, int index, int target, int sum) {
// 마지막 노드에 도달했을 때
if(index == source.length) {
// 타겟 넘버와 누적 sum이 같으면 + 1
if(target == sum) {
return 1;
} else {
return 0;
}
}
return calcNum(source, index+1, target, sum + source[index])
+ calcNum(source, index+1, target, sum - source[index]);
}
}
출처: 프로그래머스 코딩 테스트 연습,
https://programmers.co.kr/learn/challenges
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (깊이/너비 우선 탐색) 단어 변환 (0) | 2021.04.07 |
---|---|
[프로그래머스] (깊이/너비 우선 탐색) 네트워크 (0) | 2021.03.29 |
[프로그래머스] (완전탐색) 카펫 (0) | 2021.03.27 |
[프로그래머스] (완전탐색) 소수 찾기 (0) | 2021.03.27 |
[프로그래머스] (완전탐색) 모의고사 (0) | 2021.03.25 |
댓글