[백준 2606] 바이러스

Junyoung Park·2022년 4월 19일
0

코딩테스트

목록 보기
376/631
post-thumbnail

1. 문제 설명

바이러스

2. 문제 분석

일반적인 탐색 알고리즘을 통해 풀 수 있다. 이때 원본 컴퓨터의 개수를 제외해야 하는 데 주의.

3. 나의 풀이

import Foundation
let N:Int = Int(readLine()!)!
let M:Int = Int(readLine()!)!
var nodes: [[Int]] = Array(repeating: [], count: N+1)
for _ in 0..<M{
    let input = readLine()!.split(separator:" ").map{Int(String($0))!}
    let (node1, node2) = (input[0], input[1])
    nodes[node1].append(node2)
    nodes[node2].append(node1)
//  연결 그래프 생성
}

let answer = BFS(startNode:1)
print(answer)

func BFS(startNode:Int)->Int{
    var visited = Array(repeating: false, count: N+1)
    visited[startNode] = true
    var queue = [startNode]
    var total = -1
//  원본 컴퓨터는 제외해야 한다.
    
    while queue.isEmpty == false{
        let curNode = queue.removeFirst()
        total += 1
        
        for nextNode in nodes[curNode]{
            if visited[nextNode] == false{
                visited[nextNode] = true
                queue.append(nextNode)
            }
        }
    }
    return total
}
profile
JUST DO IT

0개의 댓글