🥈[그래프] Silver
그래프 탐색 Silver 단계 문제 풀이 모음
2644 촌수계산
문제 요약
알고리즘
접근 방법
코드
let n = Int(readLine()!)!
let input = readLine()!.split { $0 == " " }.map { Int($0)! }
let m = Int(readLine()!)!
var tree = [Int: [Int]]()
var visited = [Int](repeating: 0, count: n+1)
Array(1...n).forEach { tree[$0] = [] }
// 가족 관계를 인접리스트로 입력받는다. (양방향 간선)
for _ in 0 ..< m {
let input = readLine()!.split { $0 == " " }.map { Int($0)! }, (a, b) = (input[0], input[1])
tree[a]!.append(b)
tree[b]!.append(a)
}
// bfs를 통해 두 사람 사이 depth를 계산한다
print(bfs(input[0], input[1]))
func bfs(_ n: Int, _ find: Int) -> Int {
visited[n] = 1
var queue = [n]
while !queue.isEmpty {
let n = queue.removeFirst()
guard let tree = tree[n] else { continue } // 연결된 노드가 없을 수 있다.
for next in tree {
guard visited[next] == 0 else { continue }
if next == find {
return visited[n] // 시작 노드의 visited가 1이므로, visited[next]-1과 같은 값인 visited[n]을 리턴한다
}
visited[next] = visited[n] + 1
queue.append(next)
}
}
return -1 // 연결된 가족 관계 중 찾으려는 사람이 없다면 -1을 리턴한다.
}
4963 섬의 개수
문제 요약
알고리즘
접근 방법
코드
7562 나이트의 이동
문제 요약
알고리즘
접근방법
코드
11403 경로 찾기
문제 요약
알고리즘
접근방법
코드
11725 트리의 부모 찾기
문제 요약
알고리즘
접근방법
코드
Last updated