Coding Test
[프로그래머스] 타겟 넘버
SouthernDuck
2023. 6. 6. 23:41
728x90
입출력 예시
numbers target return
[4, 1, 2, 1] 4 2
class Solution {
static int answer = 0; // dfs에서 사용할 수 있도록 전역 변수 선언
public int solution(int[] numbers, int target) {
dfs(numbers, target, 0, 0); // 초깃값으로 depth, sum 모두 0으로 세팅
return answer;
}
// dfs(Depth-First Search: 깊이 우선 탐색)
public void dfs(int[] numbers, int target, int depth, int sum) {
// 마지막 노드까지 탐색을 완료했을 때(= numbers 끝까지 순회 완료)
if(depth == numbers.length) {
if(target == sum) { // target이 sum과 같으면
answer++; // answer 체크
}
return; // 아니라면 필요없기 때문에 null
}
// 이전 계층에서 다음 계층으로 내려올 때
// 양수, 음수 2개가 파생되기 때문에 sum +, sum - 두 번 사용
dfs(numbers, target, depth+1, sum + numbers[depth]);
dfs(numbers, target, depth+1, sum - numbers[depth]);
}
}
728x90
반응형