[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/49189
[풀이]
다익스트라를 이용해서 풀었다.
[코드]
import java.util.*;
class Solution {
List<List<Integer>> graph = new ArrayList<>();
int[] dist;
public int solution(int n, int[][] edge) {
int answer = 0;
//1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지
//1번 노드로부터 -> 모든 노드에 대한 최단 거리를 구한 후, 가장 멀리 떨어진 노드 개수 세기.
//다익스트라
for(int i=0; i<=n; i++){
graph.add(new ArrayList<>());
}
for(int i=0; i<edge.length; i++){
graph.get(edge[i][0]).add(edge[i][1]);
graph.get(edge[i][1]).add(edge[i][0]);
}
dist = new int[n+1];
dijkstra(1, dist);
//내림차순 정렬
Integer[] d = Arrays.stream(dist).boxed().toArray(Integer[]::new);
Arrays.sort(d, Collections.reverseOrder());
int max = d[0];
answer++;
for(int i=1; i<dist.length; i++){
if(max==d[i]){
answer++;
}
}
return answer;
}
public void dijkstra(int now, int[] dist){
for(int i=1; i<dist.length; i++){
dist[i] = Integer.MAX_VALUE;
}
dist[now] = 0;
Queue<Integer> q = new LinkedList<>();
q.add(now);
while(!q.isEmpty()){
int n = q.poll();
for(int i=0; i<graph.get(n).size(); i++){
int next = graph.get(n).get(i);
if(dist[n]+1 < dist[next]){
dist[next] = dist[n] + 1;
q.add(next);
}
}
}
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 20057 마법사 상어와 토네이도 (Java) - 시뮬레이션 (0) | 2023.03.08 |
---|---|
[pro] 프로그래머스 level3 60059 자물쇠와 열쇠 (Java) - 시뮬레이션 (0) | 2023.01.06 |
[pro] 프로그래머스 level3 43164 여행경로 (Java) - DFS (0) | 2023.01.05 |
[pro] 프로그래머스 level3 70130 스타 수열 (Java) (0) | 2023.01.04 |
[pro] 프로그래머스 level3 72413 합승 택시 요금 (Java) - 다익스트라 (0) | 2023.01.04 |