onlybooks / python-algorithm-interview

<파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트
1.21k stars 325 forks source link

34 순열 재귀함수 질문입니다. #140

Open deopark opened 2 years ago

deopark commented 2 years ago
    def dfs(elements):
        # 리프 노드일때 결과 추가
        if len(elements) == 0:
            results.append(prev_elements[:])

        # 순열 생성 재귀 호출
        for e in elements:
            next_elements = elements[:]
            next_elements.remove(e)

            prev_elements.append(e)
            dfs(next_elements)
            prev_elements.pop()

위는 책에 소개된 code인데요. 재귀에 대하여 이해를 못하고 있습니다.

처음 순열을 만들고(prev_elements가 [1,2,3]인 상태), prev_elements.pop()에 의해서 2, 3이 제거되는데 왜 2 번 일어나는 건가요?

질문이 어설프면 힌트라도 주세요.. 감사합니다.

likejazz commented 2 years ago

질문이 무슨 말씀인지 잘 모르겠습니다. 재귀는 원래 어려우니 너무 당황해하지 마시고 연습장에 값을 하나씩 손으로 직접 적으면서 이해하는 방법을 추천합니다.