본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
자바스크립트 코드(나의 풀이)
function solution(numbers, target) {
let answer = 0;
// 주어진 숫자의 개수
const numbersCount = numbers.length;
// index: 접근할 배열의 인덱스, numbers: 주어진 숫자 배열, sum: 누적된 합, target: 목표합
function DFS(index, sum) {
// 주어진 숫자 배열을 탐색 완료하면
if (index === numbersCount) {
// target과 같으면 답으로 기록
if (sum === target) {
answer += 1;
}
// 재귀 호출 종료
return;
} else {
// 숫자 배열의 다음 인덱스에 접근하고 누적합에 더하기
DFS(index + 1, sum + numbers[index]);
// 숫자 배열의 다음 인덱스에 접근하고 누적합에 빼기
DFS(index + 1, sum - numbers[index]);
}
}
DFS(0, 0);
return answer;
}
Comment
DFS를 활용해서 주어진 수들로 구할 수 있는 모든 합의 케이스를 구하고, target에 맞는 경우 카운트하도록 처리하였다.
재귀적으로 케이스를 분할해서 접근한다는 개념으로 풀었다.
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 - JavaScript 풀이 (0) | 2022.06.26 |
---|---|
[프로그래머스] 큰 수 만들기 - JavaScript 풀이 (0) | 2022.06.25 |
[프로그래머스] 하노이의 탑 - JavaScript 풀이 (0) | 2022.06.22 |
[프로그래머스] 신고 결과 받기 - JavaScript 풀이 (0) | 2022.01.28 |
[프로그래머스] 나머지가 1이 되는 수 찾기 - JavaScript 풀이 (0) | 2022.01.02 |