BOJ/Swift

[프로그래머스] 가장 먼 노드 Swift

띵지니어 2024. 11. 13. 23:56
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/49189

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

내 코드

import Foundation

func solution(_ n: Int, _ edge: [[Int]]) -> Int {
    
    var visited: [Bool] = Array(repeating: false, count: n+1)
    var graph: [[Int]] = Array(repeating: [], count: n+1)
    var result: [Int] = Array(repeating: 0, count: n+1)
    
    var queue: [Int] = []
    
    for i in edge {
        graph[i[0]].append(i[1])
        graph[i[1]].append(i[0])
    }
    
    queue.append(1)
    result[1] = 1
        
    while !queue.isEmpty {
        let x = queue.removeFirst()
        visited[x] = true
        
        for i in graph[x] {
            if !visited[i] {
                queue.append(i)
                visited[i] = true
                result[i] = result[x] + 1
            }
        }
    }
    
    let maxValue = result.max()
    
    return result.filter { $0 == maxValue }.count
}

Review

너비 우선 탐색(BFS)으로 탐색하면서, 노드의 거리들을 result 배열에 담아주었습니다.

그 result에서 최댓값을 구한 후, 최댓값들이 모여있는 배열의 수를 리턴해줬습니다.

반응형
목차(index)