작성
·
195
1
안녕하세요 선생님 항상 질 좋은 강의 감사드립니다. 다름이 아니라 DFS 함수에 인자로 `sum`을 넘기는것이 아니라 다음처럼 종료조건에 도달했을 때 `reduce` 함수를 사용하는것도 괜찮은 코드인지 여쭤보고 싶습니다.
let n = 5;
let k = 3;
let arr = [2, 4, 5, 8, 12];
let m = 6;
console.log(solution(n, k, arr, m));
function solution(n, k, arr, m){
let temp = Array.from({length: k}, () => 0);
let cnt=0;
function DFS(L, S){
if (L === k){
let sum = temp.reduce((prev, cur) => prev+cur);
if (sum % m === 0) cnt++;
}else{
for (let i=S; i<n; i++){
temp[L]=arr[i];
DFS(L+1, i+1);
}
}
}
DFS(0, 0);
return cnt;
}
답변 1
2
안녕하세요^^
재귀가 넘어갈 때 sum변수에 누적하는게 시간복잡도가 훨씬 좋습니다.
종료조건을 만날 때마다 반복문이 따로 돌면서 sum을 구하는 것은 좋지 않습니다.
감사합니다 *^^*