공부 일지/알고리즘

[바킹독 알고리즘]0x0A강 - DFS

Roble 2024. 1. 1. 17:02

0x00 DFS

DFS( Depth First Search)

: 다차원 배열에서 각 칸을 방문할 때 깊이를 우선으로 방문하는 알고리즘

 

방문여부확인을 스택을이용한다

 

 

 

BFS( Breadth First Search)

: 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘

 

방문여부확인을 이용한다

 

 

 

 

0x01 예시

 

 

 

 

0x02 BFS vs DFS

 

DFS는 한 방향으로 막힐때 까지 쭉 직진을 하는것처럼 보인다.

 

BFS, DFS 모두 순회하면서 체크하는 알고리즘이긴 하나 BFS에서 유용하게 썻던 "현재 보는 칸으로부터 인접한 칸은 거리가 현재 보는 칸보다 1만큼 더 떨어져있다"는 성질이 DFS에서는 성립하지 않는다. 그래서 거리를 계산할 때에는 DFS를 사용할 수 없다.

 

결국 앞으로 다차원 배열에서 순회하는 문제를 풀 때 계속 BFS만 짜게 된다.

 

앞으로 트리나 그래프 자료구조를 배울 때 DFS가 필요하다.