[코딩테스트] 🗺️ 여행경로 - 백준 1976
2025. 10. 13. 23:29ㆍ알고리즘
문제링크
난이도
골드 4
유형
Union-Find
소요시간
1시간
회고
유니온 파인드를 저번 표병합 때 대충 넘겼더니 머리속에서 사라졌다. 이번에 개념을 제대로 잡는 계기가 되었다.
코드
let N = Int(readLine()!)!; let M = Int(readLine()!)!
var answer = "YES"
var group = Array(0...N)
// 그룹의 대표 찾기
func find(_ x: Int) -> Int {
if group[x] == x {
return group[x]
}
group[x] = find(group[x])
return group[x]
}
// 대표가 다르면 단일화
func union(_ x: Int, _ y: Int) {
let rootX = find(x)
let rootY = find(y)
if rootX == rootY {
return
}
group[rootY] = rootX
}
(1...N).forEach { i in
let row = readLine()!.split(separator: " ").compactMap { Int($0) }
(1...N).forEach { j in
if row[j - 1] == 1 {
// 단일화
union(i, j)
}
}
}
let path = readLine()!.split(separator: " ").compactMap { Int($0) }
let start = path[0]
for step in (0..<path.count) {
if find(start) != find(path[step]) {
answer = "NO"
break
}
}
print(answer)'알고리즘' 카테고리의 다른 글
| [코딩테스트] 🧹 로봇청소기 - 백준14503 (0) | 2025.10.20 |
|---|---|
| [코딩테스트] 🏆 등수매기기 - 백준 2012 (0) | 2025.10.15 |
| [코딩테스트] 🚶 인구이동 - 백준 16234 (0) | 2025.10.10 |
| [코딩테스트] ♠️ 카드 게임 - kakao 2024 winter (0) | 2025.10.10 |
| [코딩테스트] 🐑 양과 늑대 - Kakao 2022 (0) | 2025.10.10 |