-
https://www.acmicpc.net/problem/1167
1167번: 트리의 지름
트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지
www.acmicpc.net
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 트리 정보가 주어졌을 때 트리의 정점 간 거리가 가장 먼값을 구하는 문제다.
처음에 dfs 하나를 이용해서 방문 체크로 확인하면 되겠다 생각했더니
값이 12 가 나왔고, 생각해 보니 dfs가 두 개 필요하다 생각했고,
문제를 고민하던 중 친구가 힌트를 던져줘서 생각해 보다가 해결할 수 있었다.
힌트 내용은 시작에서 끝까지 가고 나서 다시 끝에서 시작하면 된다였고,
테케를 그림으로 그려 생각해 보면 어느 정점에서 가정 먼 점을 가면 그 점은
해당 트리에서 가장 먼 점 2곳 중 하나인 것을 알게 되었고,
처음 dfs는 1에서 출발해서 가장 먼 곳을 찾도록 하여서 그 정점을 저장해 주었고
이후 dfs에서는 찾은 정점에서 시작해서 가장 먼 정점으로 가도록 해서
최종 값을 찾도록 하였다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 9375 패션왕 신해빈 JAVA (0) 2021.11.16 Baekjoon 2206 벽 부수고 이동하기 JAVA (0) 2021.11.16 Baekjoon 1520 내리막 길 JAVA (0) 2021.11.16 Baekjoon 1965 상자넣기 JAVA (0) 2021.11.16 Baekjoon 13414 수강신청 JAVA (0) 2021.11.15 댓글