어제 백준 치킨거리 문제를 풀다가 아 이거 dfs 알고리즘을 쓰는거다!
했으나, swift 시작한지 거의 2일차...당장 2차원 배열도 공부 안했는데 ㅋㅋ dfs구현이요?!
그래도 당장 닥쳐왔을 때 공부하는게 기억에 남을 듯 하여 이번 기회에 DFS를 swift로 구현하는 방법을 알아보도록 하자.
let graph: [String: [String]] = [
"A":["B", "C"],
"B":["A", "D", "E"],
"C":["A","F"],
"D":["B"],
"E":["B"],
"F":["C"],
]
func DFS(graph: [String: [String]], start: String) -> [String] {
var visitedQueue: [String] = []
var needVisitStack: [String] = [start]
while !needVisitStack.isEmpty {
let node: String = needVisitStack.removeLast()
if visitedQueue.contains(node) { continue }
visitedQueue.append(node)
needVisitStack += graph[node] ?? []
}
return visitedQueue
}