[프로그래머스] 타겟 넘버
guswns1659 opened this issue · comments
HYUNJUN SON commented
문제 풀이 핵심 아이디어
- 너비, 깊이 우선 탐색에 배운 뒤에 문제는 어떻게 응용되나 보고 싶어서 봤던 문제.
- 그래프 구조로 모든 경우의 수를 구하면 되는데 이걸 어떻게 구현하지??...
- 참고
- 만약 깊이 우선 탐색이 끝일 때 (index == numbers.length)
- 노드의 합이 target과 같다면 return 1
- 노드의 합이 target과 다르다면 return 0
- 만약 깊이 우선 탐색이 끝이 아닐 때
- 오른쪽 dfs 결과 + 왼쪽 dfs 결과
어려운점
- 위 참고 블로그를 본 뒤 드는 생각은 정말 개념만 익힌 것이고 문제별로 구현하는 방식이 다르다. DFS 방식으로 풀어야 한다는 개념은 맞지만 각 문제 별로 적용해야할 방법이 다르다. 이걸 연습해야 할 듯
코드
public int solution(int[] numbers, int target) {
return dfs(numbers, target, 0, 0);
}
public int dfs(int[] numbers, int target, int index, int sum) {
if (index == numbers.length) {
return (sum == target) ? 1 : 0;
}
return dfs(numbers, target, index+1, sum + numbers[index])
+ dfs(numbers, target, index+1, sum - numbers[index]);
}