From 029eaef3bd0a6b3d587dfdf873b39d434bbb7f68 Mon Sep 17 00:00:00 2001 From: sey2 <54762273+sey2@users.noreply.github.com> Date: Mon, 29 Aug 2022 17:20:43 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B0=80=EC=9E=A5=20=EB=A8=BC=20=EB=85=B8?= =?UTF-8?q?=EB=93=9C=20-=20level3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/FarthestNode.java | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 programmers/FarthestNode.java diff --git a/programmers/FarthestNode.java b/programmers/FarthestNode.java new file mode 100644 index 0000000..57e4225 --- /dev/null +++ b/programmers/FarthestNode.java @@ -0,0 +1,55 @@ +import java.util.*; + +class Solution { + private ArrayList> list = new ArrayList<>(); + private boolean visited[]; + private int depth[]; + + public int solution(int n, int[][] edge) { + init(n,edge); + + bfs(1); + + Arrays.sort(depth); + + int answer = 0; + int max = depth[n]; + for(int i=n; i>=0; i--){ + if(max != depth[i]) break; + answer++; + } + return answer; + } + + public void bfs(int start){ + Queue queue = new LinkedList<>(); + queue.add(start); + depth[start] = 1; + visited[start] = true; + + while(!queue.isEmpty()){ + int cur = queue.poll(); + + for(int vertex : list.get(cur)){ + if(!visited[vertex]){ + queue.add(vertex); + depth[vertex] = depth[cur]+1; + visited[vertex] = true; + } + } + } + } + + public void init(int n, int [][] edge){ + + for(int i=0; i<=n; i++) list.add(new ArrayList<>()); + + for(int i=0; i