반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "백준 BOJ - 2606 바이러스" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 그래프 탐색 문제입니다.
연결되어 있는 노드의 개수를 세면 됩니다.
bfs, dfs 무엇을 사용하든 상관 없습니다.
이 문제는 양방향 그래프라는 점만 주의하시면 될 것 같습니다.
전체 코드
//2606 바이러스
import Foundation
let node = Int(readLine()!)!
let edge = Int(readLine()!)!
var graph: [Int:[Int]] = [:]
var visited: [Int] = []
for i in 1...node {
graph.updateValue([], forKey: i)
}
for _ in 1...edge {
let input = readLine()!.split { $0 == " " }.map { Int(String($0))! }
graph[input[0]]?.append(input[1])
graph[input[1]]?.append(input[0])
}
func dfs(_ node: Int) {
if visited.contains(node) {
return
}
visited.append(node)
for node in graph[node]! {
dfs(node)
}
}
dfs(1)
print(visited.count - 1)
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형