DFS는 깊이 우선 탐색을로 재귀함수를 구현해야하고
BFS는 큐를 구현하여 해결해야 합니다.
import Foundation
// 입력을 받아서 배열을 초기화합니다.
let line = readLine()!.split(separator: " ").map { Int($0)! }
var arr: [[Int]] = Array(repeating: [], count: line[0] + 1)
// 간선 정보를 입력받아 배열에 저장합니다.
for _ in 1...line[1] {
let values = readLine()!.split(separator: " ").map { Int($0)! }
arr[values[0]].append(values[1])
arr[values[1]].append(values[0])
}
for i in 1...line[0] {
arr[i].sort()
}
// 방문한 노드를 추적하기 위한 배열을 생성합니다.
var visited = Array(repeating: false, count: line[0] + 1)
func dfs(n: Int) {
// 현재 노드를 방문 처리합니다.
visited[n] = true
print(n, terminator: " ") // 현재 방문한 노드를 출력합니다.
// 인접한 모든 노드를 탐색합니다.
for i in arr[n] {
if !visited[i] {
dfs(n: i) // 방문하지 않은 노드에 대해 재귀적으로 DFS를 수행합니다.
}
}
}
// 시작 노드부터 DFS를 시작합니다.
dfs(n: line[2])
print()
var visited2 = Array(repeating: false, count: line[0] + 1)
func bfs(n: Int) {
// 큐를 사용 (FILO) 처음으로 들어온 것이 마지막으로 나갑니다
var queue: [Int] = [n]
visited2[n] = true
while !queue.isEmpty {
let node = queue.removeFirst()
print(node, terminator: " ")
for i in arr[node] {
if !visited2[i] {
visited2[i] = true
queue.append(i)
}
}
}
}
bfs(n: line[2])
'Algorithm > Baekjoon' 카테고리의 다른 글
Swift - 백준 1764번 듣보잡 (0) | 2024.08.28 |
---|---|
Swift - 백준 1620번 (0) | 2024.08.28 |
Swift - 백준 1012번 유기농 배추 (0) | 2024.08.25 |
Swift - 백준 1003번 피보나치 함수 (0) | 2024.08.25 |
Swift - 백준 4949번 균형잡힌 세상 (0) | 2024.08.22 |