인프런 커뮤니티 질문&답변
DFS 그래프 질문드립니다.
작성
·
211
0
public void DFS(int now)
{
Console.WriteLine(now);
visited[now] = true;
for(int next = 0; next < 6; next++)
{
if (adj[now, next] == 0)
continue;
if (visited[next])
continue;
DFS(next);
}
}
이 함수에서
1. adj [ 2, 5 ] 까지 for 문을 돌다가 next 값이 6이 되면 그대로 함수를 종료시키지않고 왜 DFS(next); 로 가는건가요??
2. 1번항목에서 DFS(next); 로 돌아갔을때 next 값이 2가 되는이유가 궁금합니다
퀴즈
스택(Stack)과 큐(Queue)의 핵심적인 데이터 처리 순서 차이는 무엇인가요?
스택: 먼저 입력된 데이터가 먼저 처리된다 (FIFO) / 큐: 나중에 입력된 데이터가 먼저 처리된다 (LIFO)
스택: 나중에 입력된 데이터가 먼저 처리된다 (LIFO) / 큐: 먼저 입력된 데이터가 먼저 처리된다 (FIFO)
둘 다 입력 순서와 상관없이 임의 접근이 가능하다
스택: 데이터 개수에 제한이 없다 / 큐: 데이터 개수에 제한이 있다
답변 1
0
두 질문이 사실상 동일한데 재귀함수의 특성이기 때문입니다.
이런 중첩인형을 생각하시면 됩니다.
0에서 시작한 DFS는,
이어서 인접한 정점 1, 3에서 또 DFS를 돌리게 되고, ...
이런 식으로 파고 파고 들어가는 것이죠.





