π¬Β λ¬Έμ
https://www.acmicpc.net/problem/1260
π¬Β Idea
- DFSλ₯Ό μνν λ λ²νΈκ° μμ λ
Έλλ€λΆν° μννκΈ° μν΄μ μν λ°°μ΄μ μ λ ¬ν λ€ λ€μ§μ΄μ μ μ₯ν΄μ€λ€.
- BFSλ₯Ό μνν λλ λ²νΈκ° μμ λ
Έλλ€λΆν° μννκΈ° μν΄μ μν λ°°μ΄μ μ λ ¬νμ¬ μ μ₯ν΄μ€λ€.
π¬Β νμ΄
func solution1260(){letinfo=readLine()!.split(separator:"").map({Int(String($0))! })vargraph:[Int:[Int]]=[:]for_in0..<info[1]{letnodes=readLine()!.split(separator:"").map({Int(String($0))! })ifgraph[nodes[0]]==nil{graph[nodes[0]]=[nodes[1]]}else{graph[nodes[0]]?.append(nodes[1])}ifgraph[nodes[1]]==nil{graph[nodes[1]]=[nodes[0]]}else{graph[nodes[1]]?.append(nodes[0])}}func dfs(graph:[Int:[Int]], start:Int)->[Int]{varneedToVisitStack:[Int]=[start]varvisitedQueue:[Int]=[]while !needToVisitStack.isEmpty {letnode= needToVisitStack.removeLast()if visitedQueue.contains(node){continue}
visitedQueue.append(node)iflet nodes =graph[node]?.sorted().reversed(){
needToVisitStack += nodes
}}return visitedQueue
}func bfs(graph:[Int:[Int]], start:Int)->[Int]{varneedToVisitQueue:[Int]=[start]varvisitedQueue:[Int]=[]while !needToVisitQueue.isEmpty {letnode= needToVisitQueue.removeFirst()if visitedQueue.contains(node){continue}
visitedQueue.append(node)iflet nodes =graph[node]?.sorted(){
needToVisitQueue += nodes
}}return visitedQueue
}print(dfs(graph: graph, start:info[2]).map({String($0)}).joined(separator:""))print(bfs(graph: graph, start:info[2]).map({String($0)}).joined(separator:""))}μμμκ° : 30λΆ
π¬Β λ¬Έμ https://www.acmicpc.net/problem/1260
π¬Β Ideaπ¬Β νμ΄μμμκ°: 30λΆ