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

Yeonho Kim님의 프로필 이미지
Yeonho Kim

작성한 질문수

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

6. 바둑이 승차(이진트리 DFS)

바둑이 승차관련 sum>c return으로 조건을 돌면 최대값을 찾기 전에 프로그램이 종료되는건 아닌가요??

작성

·

248

·

수정됨

0

        <script>
            function solution(c, arr){
                let answer=Number.MIN_SAFE_INTEGER;
                let n=arr.length;
                function DFS(L, sum){
                    if(sum>c) return;
                    if(L===n){
                        answer=Math.max(answer, sum);
                    }
                    else{
                        DFS(L+1, sum+arr[L]);
                        DFS(L+1, sum);
                    }                  
                }
                DFS(0, 0);
                return answer;
            }

            let arr=[81, 58, 42, 33, 61];
            console.log(solution(259, arr));
        </script>

아직 재귀에 대한 이해가 짧아 잘 모르겠습니다.

답은 242인데,

만약 sum의 값이 181이었고 다음에 나온 sum의 값이

275라고 한다면

sum>259일때 return으로 함수가 종료되고

최대값인 242를 찾지 못하고 181로 종료가 될수도 있는것 아닌가요??

아니면 제가 이해를 잘못한건지요??

 

답변 1

0

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

안녕하세요^^

return 문은 재귀 전체를 종료하는게 아니라 sum을 275를 만들며 호출한 함수만 종료합니다. 재귀를 좀더 많이 하다보면 이해가 갈 겁니다.

Yeonho Kim님의 프로필 이미지
Yeonho Kim

작성한 질문수

질문하기