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

문제훈님의 프로필 이미지
문제훈

작성한 질문수

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

5. 합이 같은 부분집합(이진트리 DFS)

꼭 L이 n일때 끝나지 않아도 되지 않나요??

작성

·

338

·

수정됨

0

function solution(arr) {
  let answer = "NO";
  let total = arr.reduce((a, b) => a + b);
  let n = arr.length;

  function DFS(L, sum) {
    if (answer == "YES" || L > n ||sum > total / 2) return;

    if (total / 2 === sum) {
      answer = "YES";
      return;
    } else {
      DFS(L + 1, sum + arr[L]);
      DFS(L + 1, sum);
    }
  }
  DFS(0, 0);
  return answer;
}

어떤 배열의 서로소 부분집합의 합은 같아야 한다

= 서로소인 부분집합의 합은 total의 반이 되면 된다.

라고 한다면 어떤 부분집합의 합이 total의 반이 된다면 바로 끝내면 되지 않을까 해서 여쭤봅니다.

 

if(L===n){
  if((total-sum)===sum){
      answer="YES";
  }
}

 즉 이 부분에서, 꼭 L===n이 되지 않더라도 그 전에 sum이 total의 반이 된다면 끝날 수 있어도 되지 않나요?

 

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 그렇게 해도 상관없을 것 같습니다.

문제훈님의 프로필 이미지
문제훈

작성한 질문수

질문하기