메뉴
brunch
매거진
프로그래밍
Python DFS
백문 문제 풀이 (2644)
by
Moai
Oct 16. 2020
DFS에는
Depth-First Search의 약자이며 BFS와 달리 모두 조회할 필요 없이 정답만 구하면 될 경우 이용한다. 주로 코딩테스트 중급문제에서 자주 출제된다.
DFS는 백트래킹 기법에서도 사용할 수 있으므로 알아두면 좋다. 백트래킹 기법은 앞서 설명했다.
DFS를 공부하기 위해 백준 2644번 문제를 풀어보자
https://www.acmicpc.net/problem/2644
2644번: 촌수계산
https://www.acmicpc.net/problem/2644
위와 같이 촌수관계가 있을 때 3과 7의 촌수는 3촌관계이다.3에서 출발하여 자기와 연결된 노드를 조회한다. 단 여기선 BFS와 다르게 중간에 다른 노드를 살펴보지 말고 끝까지 조회해본다.
3 -> 1 -> 2 -> 7 방법으로 조회하면 된다.
만약 다음과 같은 촌수관계 일 때 3과 4의 촌수 관계를 구하려면 어떻게 해야할까
3 -> 1 -> 2 -> 7 ->6 -> 7 -> 8 -> 4 와 같은 순서로 구하면 된다.
일단 끝까지 가보는 방법이다. DFS는 stack을 이용하며 소스코드는 다음과 같다. 앞에서 공부한 BFS와 소스코드가 거의 유사하다. 차이점이라면 BFS에는 방문한 노드를 visit배열에 표현했는데 여기서는 시작점과의 촌수를 relation 배열에 표현했다는 것이다.
keyword
Python
그래프
테스트
6
댓글
댓글
0
작성된 댓글이 없습니다.
작가에게 첫 번째 댓글을 남겨주세요!
브런치에 로그인하고 댓글을 입력해보세요!
Moai
직업
개발자
개발자, 분석가
구독자
37
구독
매거진의 이전글
Python BFS
Git과 Github
매거진의 다음글