본문 바로가기

PS/백준

[BOJ] 백준 1167 트리의 지름 (Swift)

반응형

문제

https://www.acmicpc.net/problem/1167

 

1167번: 트리의 지름

트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지

www.acmicpc.net

풀이

DFS를 사용해서 풀 수 있습니다.

임의의 노드에서 출발하여 가장 먼 거리에 있는 노드를 탐색해줍시다.
의의 노드에서 출발하여 가장 먼 거리에 있는 노드트리의 지름에 포함되는 노드입니다.

가장 먼 거리에 있는 노드를 찾았다면 그 노드에서 부터 가장 깊은 곳이 트리의 지름이 됩니다.

소스코드

후기

처음에는 모든 노드에 대해 DFS나 다익스트라를 해봐야하나... 생각이 들었습니다.
하지만 정점의 개수가 최대 10만이므로, 두 방식으로는 시간초과가 나게됩니다.
블로그 글을 참고해서 풀이하였고, 이런 방법은 직접 떠올리지 못해서 아쉬웠습니다.😂

반응형