๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/11724
๋ฌธ์ ํ์ด
- ๋๋ ์์ง graph๋ฅผ ์
๋ ฅ๋ฐ๋๊ฒ ํ๋ค๋ค.
- ์ด๋ฒ์ ์ฌ์ฉํ ๋ฐฉ์์, ๋ค์๊ณผ ๊ฐ๋ค. graph๋ผ๋ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ทธ ์์ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค๋ก ์ฑ์์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ํ๋์ ๋
ธ๋๋ฅผ ์ ํํ๊ณ , ๊ทธ ๊น์ด๋ฅผ ์ ์ฒด ๋ค ํ์ํ ํ๋ค์, ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ฉด!! ์๋ก์ด ๊ทธ๋ํ๋ฅผ ํ์ํด์ผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
DFS์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค. - ๋ง์ง๋ง main for๋ฌธ์ ์์ฑํ๋๋ฐ ์กฐ๊ธ ํ๋ค์๋ค.
- ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋์ธ๋ฐ → ๋ ์ด์์ฐ๊ฒฐ๋ ๋ ธ๋๊ฐ ์๋ค๋ฉด → ๋ฐฉ๋ฌธ์ฒ๋ฆฌํด์ฃผ๊ณ , count๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค. (๊ทธ๋ํํ๋๊ฐ ๋์๋ค๋ ๋ป์ด๋๊น!)
- ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋์ธ๋ฐ → ๋ค์ ๋ ธ๋๊ฐ ์กด์ฌํ๋ค๋ฉด → dfs ์ฌ๊ท๋ฅผ ๋๋ ค์ ํ์ํด์ค๋ค.
์ ์ฒด ์์ค์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
// n : ๋
ธ๋(์ ์ )์ ๊ฐ์
// m : ๊ฐ์ ๊ฐ์ (์ฐ๊ฒฐ์์)
var nm = readLine()!.split(separator: " ").map{ Int(String($0))! }
var graph = Array(repeating: [], count: nm[0]+1)
var visited = Array(repeating: false, count: nm[0]+1)
var answer = 0
var depth = 0
for _ in 0..<nm[1] {
let uv = readLine()!.split(separator: " ").map { Int(String($0))! }
graph[uv[0]].append(uv[1])
graph[uv[1]].append(uv[0])
}
func dfs(_ start: Int ,_ depth: Int) {
visited[start] = true // ๋ค์ด๊ฐ์๋ง์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ go
for i in 0..<graph[start].count{ // ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค ์ฐจ๋ก๋๋ก ๋ฐฉ๋ฌธ
let next = graph[start][i]
if visited[next as! Int] == false{ // ๋ง์ฝ ๋ฐฉ๋ฌธํ์ง ์์๋ ๋
ธ๋๋ฉด
dfs(next as! Int, depth + 1) // ๋ฐฉ๋ฌธํด์ ๋ค์ ํ์
}
}
}
// main
for i in 1..<nm[0]+1 {
if !visited[i] { //๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋์ด๊ณ
if graph[i].isEmpty { // ๋์ด์ ๋ฐฉ๋ฌธํ ๋
ธ๋๊ฐ ์๋ค๋ฉด (๊ทธ๋ํ์ ์ฐ๊ฒฐ์ด ๋๊ฒผ๋ค๋ฉด)
answer += 1 // ์๋ก์ด ๊ทธ๋ํ๊ฐ ์์ฑ๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ answer += 1
visited[i] = true // ๊ทธ๋ฐ ๋ค์, ๋ฐฉ๋ฌธ์ฒ๋ฆฌ go
} else { // ์ฐ๊ฒฐ๋ ๊ทธ๋ํ๊ฐ ์๋ค๋ฉด
dfs(i, 0) // dfs๋ก ๋ค์ ๋ค์ ๋
ธ๋๋ฅผ ํ์ํ๊ธฐ ์ํด dfs ์ฌ๊ท
answer += 1 // ์ฌ๊ท๊ฐ ๋๋๋ฉด answer +=1
}
}
}
print(answer)
๋ฐ์ํ
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 1707๋ฒ - ์ด๋ถ๊ทธ๋ํ (DFS๋ก ํ๊ธฐ!) (0) | 2022.05.25 |
---|---|
[๋ฐฑ์ค] (Swift) 14889๋ฒ - ์คํํธ์ ๋งํฌ (DFS-๋ฐฑํธ๋ํน) (0) | 2022.05.23 |
[๋ฐฑ์ค] (Swift) 14501๋ฒ - ํด์ฌ (DP๋ก ํ๊ธฐ) (0) | 2022.05.17 |
[๋ฐฑ์ค] (Swift) 1260๋ฒ - DFS์ BFS (0) | 2022.05.14 |
[๋ฐฑ์ค] (Swift) 1759๋ฒ - ์ํธ ๋ง๋ค๊ธฐ (0) | 2022.05.10 |