인프런 커뮤니티 질문&답변

안영우1님의 프로필 이미지
안영우1

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

15. 수들의 조합

코드 질문드립니다!

작성

·

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을 구하는 것은 좋지 않습니다.

안영우1님의 프로필 이미지
안영우1
질문자

감사합니다 *^^*

안영우1님의 프로필 이미지
안영우1

작성한 질문수

질문하기