반응형
1. DFS 알고리즘 구현
자료구조 스택과 큐를 활용함
* needVisit 스택과 visited 큐, 두 개의 자료 구조를 생성
BFS 자료구조는 두 개의 큐를 활용하는데 반해, DFS는 스택과 큐를 활용한다는 차이가 있음을 인지해야 함
public class DFSSearch {
public ArrayList<String> dfsFunc(HashMap<String, ArrayList<String>> graph, String startNode) {
ArrayList<String> visited = new ArrayList<String>();
ArrayList<String> needVisit = new ArrayList<String>();
needVisit.add(startNode);
while(needVisit.size() > 0) {
String node = needVisit.remove(needVisit.size() - 1); // BFS와 이 부분만 차이 (큐 -> 스택)
if(!visited.contains(node)) {
visited.add(node);
needVisit.addAll(graph.get(node));
}
}
return visited;
}
}
}
2. 시간복잡도
노드 수 : V
간선 수 : E
O(V+E)
반응형
'Coding Test' 카테고리의 다른 글
CT | 백준 2577번 숫자의 개수 (0) | 2024.10.21 |
---|---|
Algorithm | 탐욕 알고리즘(Greedy Algorithm) (0) | 2024.10.19 |
Graph | 너비 우선 탐색(Breadth-First Search) (0) | 2024.10.16 |
Graph| 그래프 이해와 자료 구조 (0) | 2024.10.16 |
탐색 알고리즘 | 이진 탐색(Binary Search) (0) | 2024.10.16 |