문제 소개
https://www.acmicpc.net/problem/11724
연결 요소의 갯수를 출력하는 문제이다.
문제 풀이
아래와 같이 그래프를 만들어서 dfs로 순회하는 식으로 문제를 풀었다.
import Foundation
let nm = readLine()!.split(separator: " ").map{ Int(String($0))! }
let (n, m) = (nm[0], nm[1])
var graph = Array(repeating: Array(repeating: 0, count: n+1), count: n+1)
var visited = Array(repeating: false, count: n+1)
visited[0] = true
for _ in 0..<m {
let uv = readLine()!.split(separator: " ").map { Int(String($0))! }
let (u, v) = (uv[0], uv[1])
graph[u][v] = 1
graph[v][u] = 1
}
var answer = 0
func dfs(_ node: Int) {
visited[node] = true
for i in 1...n {
if graph[node][i] == 1 && !visited[i] {
dfs(i)
}
}
}
for i in 1...n {
if !visited[i] {
answer += 1
dfs(i)
}
}
print(answer)
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 2178번 미로 탐색 (Swift) (0) | 2024.05.13 |
---|---|
[Algorithm] 백준 - 2667번 단지번호 붙이기 (Swift) (0) | 2024.05.12 |
[Algorithm] 백준 - 1260번 DFS와 BFS (Swift) (0) | 2024.05.10 |
[Algorithm] 백준 - 13023번 ABCDE (Swift) (0) | 2024.05.10 |
[Algorithm] 백준 - 나무 자르기 (이분탐색) (0) | 2024.05.02 |