나의 기록, 현진록

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

Programming/Algorithm & Data Structure

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

guswlsdk 2025. 3. 26. 10:13
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

1. 문제 이해

- 1번 노드에서 가장 멀리 떨어져 있는(최대 dept)의 노드 개수 구하기

 

 

2. 접근 방법

bfs 알고리즘 사용하여 dept마다 이동 가능한 노드 갯수 업데이트

bfs 알고리즘 수행 후 업데이트 된 노드 갯수를 출력

 

 

3. 코드

import Foundation

func solution(_ n:Int, _ edge:[[Int]]) -> Int {
    var map = Array(repeating: [Int](), count: n)
    var visited = Array(repeating: false, count: n)
    var result = 0
    for e in edge{
        let start = e[0] - 1
        let end = e[1] - 1
        map[start].append(end)
        map[end].append(start)
    }
    
    func bfs(queue: [Int]){
        var queue = queue
        
        while !queue.isEmpty{
            var newQueue = [Int]()
            
            var nodeCount = 0
            for start in queue{
                for end in map[start]{
                    if visited[end] == false{
                        newQueue.append(end)
                        visited[end] = true
                        nodeCount += 1
                    }
                }
            }
            if newQueue.isEmpty{
                break
            }
            result = nodeCount
            queue = newQueue
        }
    }
    visited[0] = true
    bfs(queue: [0])
    return result
}

 

 

4. 회고

현재 노드에서 이동할 수 있는 노드의 최대 갯수를 구하는 문제로 잘 못 이해하여 result = max(nodeCount, result)로 작성하여 "맞왜틀" 해버림

 

반응형