1. ๋ฌธ์
- ๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ธ์ ๋ฆฌ์คํธ๋ก ๊ตฌํ
2. ๋ฌธ์ ์ค๊ณ
- ๊ทธ๋ํ๋ฅผ ์ธ์ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๊ฒ ๋๋ฉด, ๋ ์ ์ ์ด ์ฐ๊ฒฐ๋ผ ์๋์ง ์ฌ๋ถ๋ฅผ O(1)๋ง์ ์ ์ ์๋ ์ธ์ ํ๋ ฌ์ ๋นํด O(์ฐจ์) ๋งํผ ๊ฑธ๋ฆฌ๊ฒ ๋๋ฏ๋ก, ์ด ๋ถ๋ถ์ด ๋จ์ ์ด ๋ ์ ์์
- ํ์ง๋ง, ์ธ์ ํ๋ ฌ์ ๋นํด ๊ณต๊ฐ ํ์ฉ๋๊ฐ ๋์ผ๋ฉฐ, ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์ ์ ์ ๊ฐ์๋ฅผ ํ์ ํ๋๋ฐ ์ธ์ ํ๋ ฌ๋ณด๋ค ํจ์จ์ ์ด๊ฒ ํ์ ํ ์ ์์
3. ์ ์ฒด ์ฝ๋
//MARK: - ๊ทธ๋ํ ๊ตฌํ : ์ธ์ ๋ฆฌ์คํธ
//MARK: - Framework
import Foundation
//MARK: - Type
struct Graph {
//MARK: - Property
var edges: [Int]
//MARK: - Initializer
init() {
self.edges = []
}
}
//MARK: - Function
func isConnected(_ myGraph: [Graph], _ x: Int, _ y: Int) -> Bool {
//Time Complexity : O(dgree(x))
var result: Bool = false
for i in 0..<myGraph[x].edges.count {
if myGraph[x].edges[i] == y {
result = true
break
}
}
return result
}
func getNodeList(_ myGraph: [Graph], _ x: Int) -> Void {
//Time Complexity : O(dgree(x))
var answer: String = ""
for i in 0..<myGraph[x].edges.count - 1 {
answer += "\(myGraph[x].edges[i]) "
}
answer += "\(myGraph[x].edges[myGraph[x].edges.count - 1])"
print(answer)
}
func solution() -> Void {
//MARK: - Input
guard let input: [String] = readLine()?.components(separatedBy: " ") else { return }
let n: Int = input.map { Int($0) }[0] ?? 0
let m: Int = input.map { Int($0) }[1] ?? 0
var myGraph: [Graph] = Array(repeating: Graph(), count: n + 10)
//MARK: - Process
for _ in 0..<m {
guard let inputData: [String] = readLine()?.components(separatedBy: " ") else { return }
let a: Int = inputData.map { Int($0) }[0] ?? 0
let b: Int = inputData.map { Int($0) }[1] ?? 0
myGraph[a].edges.append(b)
myGraph[b].edges.append(a)
}
//MARK: - Output
print(isConnected(myGraph, 1, 2)) //true
print(isConnected(myGraph, 1, 3)) //true
print(isConnected(myGraph, 1, 4)) //true
print(isConnected(myGraph, 1, 5)) //false
getNodeList(myGraph, 5) //3 4
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
'Swift Data Structure And Algorithm > Graph Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ_DFS (0) | 2022.04.15 |
---|---|
์ ๋ฐ์ด๋ฌ์ค_DFS (0) | 2022.04.15 |
์ด๋ถ ๊ทธ๋ํ ํ๋ณ_DFS (0) | 2022.04.15 |
2์์น ํ๊ธฐ_DFS (0) | 2022.04.15 |
๊ทธ๋ํ ๊ตฌํ : ์ธ์ ํ๋ ฌ (0) | 2022.04.14 |