새소식

인기 검색어

프로그래머스/Lv.2

[Swift] 전력망 둘로 나누기

  • -
import Foundation

func solution(_ n:Int, _ wires:[[Int]]) -> Int {
    var graph: [Int: [Int]] = [:]
    var visited: [Bool] = []
    var result = n
    
    (1...n).forEach { graph.updateValue([], forKey: $0) }

    for wire in wires {
        graph[wire[0]]?.append(wire[1])
        graph[wire[1]]?.append(wire[0])
    }

    func bfs(_ start: Int) -> Int {
        var queue: [Int] = [start]
        var index = 0

        while index < queue.count {
            let last = queue[index]
            index += 1

            visited[last] = true
            for node in graph[last]! {
                if !visited[node] {
                    queue.append(node)
                }
            }
        }

        return index
    }
    
    for i in 1...n {
        visited = Array(repeating: false, count: n+1)
        visited[i] = true
        let count = bfs(1)
        result = min(result, abs(count - (n - count)))
    }
    
    return result
}

 

'프로그래머스 > Lv.2' 카테고리의 다른 글

[Swift] 무인도 여행  (0) 2023.06.17
[Swift] 괄호 변환  (0) 2023.06.17
[Swift] 택배상자  (0) 2023.06.17
[Swift] 두 큐 합 같게 만들기  (0) 2023.06.17
[Swift] 메뉴 리뉴얼  (0) 2023.06.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.