해당 문제는 DFS문제로 경우의 수를 구하는 문제이다.
* BFS 사용 예
- 최단거리, 최소 횟수, 미로, 탐색 등
* DFS 사용 예
- 경우의 수, 이동 과정에 제약 있음 등
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43164
문제 풀이
let answer = 0
function solution(numbers, target) {
// 1) DFS 함수 최초 실행 합(sum), 인덱스(idx) 0으로 셋팅
dfsSum(0, numbers, 0, target);
return answer;
}
function dfsSum(sum, numbers, idx, target) {
// 2) 인덱스(idx)가 배열 길이와 같아지면 return한다.
if(numbers.length === idx) {
// 3) 합(sum)이 목표(target)값과 같아지면 answer 증가
if(sum === target) return answer++;
// 4) 다를 경우 그냥 return
else return;
}
// 5) 더하는 DFS 함수
dfsSum(sum+numbers[idx], numbers, idx+1, target);
// 6) 빼는 DFS 함수
dfsSum(sum-numbers[idx], numbers, idx+1, target);
return answer;
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스/JavaScript] Lv.2 귤 고르기 (1) | 2022.11.25 |
---|---|
[프로그래머스/JavaScript] Lv.2 수식 최대화 (0) | 2022.11.24 |
[프로그래머스/JavaScript] Lv.2 숫자의 표현 (0) | 2022.11.19 |
[프로그래머스/JavaScript] Lv.2 숫자 카드 나누기 (0) | 2022.11.17 |
[프로그래머스/JavaScript] Lv.3 여행경로 (0) | 2022.11.11 |