HIT해
[Swift/프로그래머스] 가장 먼 노드 ( 그래프 , BFS ) 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/49189
이전에 풀었던 문제지만 복습삼아 한번 더 풀어보았다.
인접 리스트 만드는 방법
var graph = [[Int]](repeating: [], count:n+1)
for i in edge {
graph[i[0]].append(i[1])
graph[i[1]].append(i[0])
}
큐 만드는 방법
var queue = [Int]()
var visited = [Bool](repeating:false, count:n+1)
주의할 점으로는 queue 는 Int 배열을 담는게 아닌 Int값을 담는 배열이면 된다.
풀이
import Foundation
func solution(_ n: Int, _ edge: [[Int]]) -> Int {
var graph = [[Int]](repeating: [], count:n+1)
for i in edge {
graph[i[0]].append(i[1])
graph[i[1]].append(i[0])
}
var queue = [Int]()
var visited = [Bool](repeating:false, count:n+1)
var distance = [Int](repeating:0,count:n+1)
queue.append(1)
visited[1] = true
while !queue.isEmpty{
let node = queue.removeFirst()
for i in graph[node]{
if !visited[i]{
visited[i] = true
queue.append(i)
distance[i] = distance[node] + 1
}
}
}
let maxnum = distance.max()!
print(maxnum)
let arr = distance.filter{ $0 == maxnum}.count
return arr
}
'Swift > Swift 알고리즘' 카테고리의 다른 글
[Swift/프로그래머스] 모음사전 ( 완전탐색 ) (0) | 2024.11.02 |
---|---|
[Swift/프로그래머스] 카펫 ( 완전탐색 ) (0) | 2024.11.02 |
[Swift/프로그래머스] 수식 최대화 ( 그리디 , 연산 ) (0) | 2024.11.02 |
[Swift] 순열 (0) | 2024.11.02 |
[Swift] 조합 (0) | 2024.11.02 |