문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 유형
DFS/BFS
문제 풀이
이번 문제는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 주어지고 배열 내의 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 리턴하는 문제이다. 해당 문제는 recursive DFS를 구현하여 해결할 수 있다. 0번 인덱스부터 dfs 함수를 호출하여 마지막 인덱스까지 모든 숫자를 더한 값을 계산하고 계산한 결과가 타겟 넘버인지를 확인한다. 마지막 인덱스까지 확인 후 재귀를 빠져나와 숫자가 음수인 경우를 탐색한다.
코드
function solution(numbers, target) {
let answer = 0;
function dfs(idx, sum) {
// 종료 조건
if (idx === numbers.length) {
if (sum === target) {
answer++;
}
return;
}
dfs(idx + 1, sum + numbers[idx]);
dfs(idx + 1, sum - numbers[idx]);
}
dfs(0, 0);
return answer;
}
참고
[프로그래머스] 타겟 넘버 (javascript)
문제
jjnooys.medium.com
'알고리즘' 카테고리의 다른 글
[프로그래머스] 두 큐 합 같게 만들기 JavaScript (1) | 2022.09.26 |
---|---|
[프로그래머스] 게임 맵 최단거리 JavaScript (0) | 2022.08.26 |
[LeetCode] 841 Keys and Rooms JavaScript (0) | 2022.08.22 |
[LeetCode] 543 Diameter of Binary Tree JavaScript (0) | 2022.08.21 |
[LeetCode] 78 Subsets JavaScript (0) | 2022.08.08 |