Algorithm/Baekjoon
[Swift] 2606번: 바이러스
내일은개발천재🎵
2022. 4. 2. 10:59
문제
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
알고리즘
DFS 사용
1. DFS를 수행한다.(시작노드 = 1)
2. 방문한 노드의 개수를 구한 후 1을 빼서 출력한다.
( 1에 의해 바이러스에 걸린 컴퓨터의 개수 => 1은 포함하지 않음)
나의 코드
// dfs
func dfs(n: Int){
visited[n] = true
for i in graph[n]{
if !visited[i]{
dfs(n: i)
}
}
}
// 선언 및 초기화
let node: Int = Int(readLine()!)!
let edge: Int = Int(readLine()!)!
var graph = [[Int]].init(repeating: [], count: node + 1)
var visited = [Bool].init(repeating: false, count: node+1)
// 그래프 입력받기
for _ in 1...edge{
let info = readLine()!.split(separator: " ").map{ Int(String($0))! }
graph[info[0]].append(info[1])
graph[info[1]].append(info[0])
}
// dfs 수행(시작노드 = 1)
dfs(n: 1)
// 1에 의해 감염된 컴퓨터의 개수
// 방문한 노드의 개수를 구한 후 1을 뺌
print( visited.filter{($0) == true}.count - 1 )
Key point!
📍DFS / BFS 개념 및 코드
[Algorithm] DFS / BFS 탐색 알고리즘
DFS / BFS DFS BFS 탐색 방법 깊이 우선 탐색 (시작 노드 선택은 자유롭지만, 관행적으로 번호가 낮은 순서부터 처리한다.) 너비 우선 탐색 (가까운 것 먼저) 자료구조 / 구현 방법 스택 자료구조
zest1923.tistory.com