ndb796/python-for-coding-test

이코테 DFS 질문드리고 싶습니다.

YongHeeJang opened this issue · 0 comments

소스 코드

https://github.com/ndb796/python-for-coding-test/blob/master/5/8.py

질문

위의 코드를 쭉 실행하여 6이 출력 되고나면,
for문에서 if문이 실행되지 않아서 재귀함수가 종료된다고 생각했는데,
코드를 돌려보면 6 이후 계속 출력이 실행이 됩니다.
제가 어느 부분에서 잘못 파악하고 있는지 잘 모르겠습니다.

질문 상세

6이 출력된 이후에, 제가 생각한 코드 흐름을 조금 더 자세하게 말씀드리면 다음과 같습니다.

6이 출력 된 이후에 for문을 보면,

for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)

  1. graph[6]은 [7]이기 때문에, i는 7이 되고,
  2. 이미 이전에 visited[7]=True가 되었기 때문에, if문 이하의 dfs함수가 실행되지 않는다.
  3. 따라서 6까지 출력되고 멈춘다.
    라고 생각했습니다.

어느 부분에서 잘못 생각했는지 알려주시면 감사하겠습니다.