• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

dfs()에서 result.add() 부분 질문이요!

20.11.18 19:25 작성 조회수 96

1

if (list.size() == nums.length) {
List<Integer> temp = new ArrayList<>(list);
result.add(temp);
        //return;
}

저는 dfs() 메소드의 if 구문에서 result 리스트에 결과가 추가되면
위 코드 아래부분인 for문이 돌지 않게 해야겠다는 생각으로
위에 작성한 코드같이 return;을 줬었는데, 있으나 없으나 결과가 같더라구요.

없어야 하는게 맞는 건가요~?

답변 1

답변을 작성해보세요.

0

안녕하세요

이문제는 호출을 잘 보셔야합니다.  호출하면서 다시 안에서 호출하기때문에

스택에 쌓이는 것처럼 호출이 됩니다.

디버깅을 걸어서 흘러가는걸 다 체크해보세요.

질문주신 부분은:

아래처럼 int test 를 만들어서 return을 적용해도 27번 호출,

return을  주석처리해도  27번이 호출됩니다.

  int count=0;

int test =0;

private void dfs(int[] nums, List<List<Integer>> lists, List<Integer> cur) {

    if (cur.size() == nums.length) {

        List<Integer> list = new ArrayList<>(cur);

        lists.add(list);

    test++;

        System.out.println("test : "+test);

//         return ;

    }