Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- reactorkit
- button configuration
- coordinator
- uikit toast
- swift 점선
- custombottomsheet
- Tuist
- UIKit
- swift 백준
- swift custom ui
- task cancel
- SWIFT
- swift dashed line
- rxdatasources
- domain data
- 타임라인 포맷팅
- traits
- identifiable
- DP
- BFS
- custom ui
- RxSwift
- custom navigation bar
- swift concurrency
- claen architecture
- 버튼 피드백
- scene delegate
- swift navigationcontroller
- task cancellation
- swift bottomsheet
Archives
- Today
- Total
김경록의 앱 개발 여정
[Swift 백준] 1389 케빈 베이컨의 6단계 법칙 본문
풀이 아이디어
- 그래프 탐색 문제입니다.
- 트리형태가 아니고, 사이클이 일어날 수 있는 그래프이기 때문에 방문 체크에 유의해야 합니다.
- 각 노드까지의 거리를 담는 배열을 정의하여 bfs 함수 실행 후에 비교하여 최솟값을 찾아냅니다
풀이
import Foundation
let nm = readLine()!.split(separator: " ").map { Int($0)! }
let (n, m) = (nm[0], nm[1])
var graph: [[Int]] = Array(repeating: [], count: n + 1)
for _ in 0..<m {
let input = readLine()!.split(separator: " ").map { Int($0)! }
let (a, b) = (input[0], input[1])
//인접 그래프를 생성합니다
graph[a].append(b)
graph[b].append(a)
}
var minSum = Int.max
var answer = -1
func bfs(start: Int) -> Int {
var isVisited = Array(repeating: false, count: n + 1)
var distance = Array(repeating: 0, count: n + 1)
var q = [start]
isVisited[start] = true
while !q.isEmpty {
let current = q.removeFirst()
for item in graph[current] {
if !isVisited[item] {
q.append(item)
isVisited[item] = true
distance[item] = distance[current] + 1
}
}
}
// 각 노드까지의 거리의 합을 return해줍니다
return distance.reduce(0, +)
}
//반복문을 돌며 비교, 값을 대치해줍니다. 문제에서의 요구사항처럼 최솟값이 두번 이상 나와도 이후 값으로 변경되지않습니다.
for i in 1...n {
let sum = bfs(start: i)
if sum < minSum {
minSum = sum
answer = i
}
}
print(answer)
'Algorithm' 카테고리의 다른 글
[Swift 백준] 5567 결혼식 (0) | 2025.02.19 |
---|---|
[Swift 백준] 18352 특정 거리의 도시 찾기 (0) | 2025.02.17 |
[Swift 백준] 11660 구간 합 구하기 5 (0) | 2025.02.13 |
[Swift 백준] 17390 이건 꼭 풀어야 해! (0) | 2025.02.12 |
[Swift 백준] 11659 구간 합 구하기 4 (0) | 2025.02.11 |