최단 거리 문제를 푼다면 BFS를 사용합니다.
이동할 때마다 가중치가 붙어서 이동한다거나 이동 과정에서 여러 제약이 있을 경우 DFS로 구현하는 것이 좋습니다.
Ex) 지구상에 존재하는 모든 친구 관계를 그래프로 표현한 후 Ash와 Vanessa 사이에 존재하는 경로를 찾는 경우
깊이 우선 탐색의 경우 - 모든 친구 관계를 다 살펴봐야 할지도 모른다.
너비 우선 탐색의 경우 - Ash와 가까운 관계부터 탐색
https://gmlwjd9405.github.io/2018/08/15/algorithm-bfs.html
다음과 같은 로직을 생각하고 구현하였다.
add
- div
함수를 나누어 구현
function solution(numbers, target) {
let answer = 0;
let count = 0;
function add(number, count) {
if (numbers.length - 1 === number) {
if (count === target) {
answer++;
}
return;
}
add(number + 1, count + numbers[number + 1]);
div(number + 1, count - numbers[number + 1]);
}
function div(number, count) {
if (numbers.length - 1 === number) {
if (count === target) {
answer++;
}
return;
}
add(number + 1, count + numbers[number + 1]);
div(number + 1, count - numbers[number + 1]);
}
add(0, count + numbers[0]);
div(0, count - numbers[0]);
return answer;
}
solution([1, 1, 1, 1, 1], 3);
function func(number, count) {
if (numbers.length - 1 === number) {
if (count === target) {
answer++;
}
return;
}
func(number + 1, count + numbers[number + 1]);
func(number + 1, count - numbers[number + 1]);
}
func(0, +numbers[0]);
func(0, -numbers[0]);