인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

kdh5998's profile image
kdh5998

asked

Introduction to Javascript Algorithm Problem Solving (Coding Test Preparation)

5. Subsets with the same sum (Binary Tree DFS)

코드 리뷰 부탁드립니다!!!

Written on

·

170

0

4번의 부분집합 구하기를 이용해서 코드를 구현해보았습니다.

반례나 고칠 부분이 있다면 조언 부탁드립니다!!

function solution(arr){
                let answer="NO", flag=0;
                let sum = arr.reduce((a,b)=>a+b);
                let ch = Array.from({length:arr.length+1}, ()=>0);
                function dfs(n) {
                    if(flag) return;
                    if(n === arr.length) {
                        let arr1 = [];
                        for(let i = 0; i < arr.length; i++) {
                            if(ch[i] === 1) arr1.push(arr[i]);
                        }
                        if(arr1.length > 0) {
                            let arr1_sum = arr1.reduce((a,b)=>a+b);
                            if(arr1_sum === sum - arr1_sum) {
                                answer = "YES";
                                flag = 1
                            }
                        }
                    } else {
                        ch[n] = 1;
                        dfs(n+1);
                        ch[n] = 0;
                        dfs(n+1);
                    }
                }
                dfs(0);
                return answer;
            }

            let arr=[1, 3, 5, 6, 7, 10];
            console.log(solution(arr));
코테 준비 같이 해요! javascript

Answer 1

0

codingcamp님의 프로필 이미지
codingcamp
Instructor

안녕하세요^^

매 부분집합이 완성될 때마다 reduce로 합을 구하면 조금 비효율적입니다.

영상의 방법처럼 합을 재귀함수의 매개변수로 계산하는게 좋습니다.

kdh5998's profile image
kdh5998

asked

Ask a question