File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import java .util .*;
2+
3+ /*
4+ * Programmer 가장 먼 노드
5+ * BFS로 풀어야 될것으로 보임
6+ * */
7+ class Solution {
8+ public int solution (int n , int [][] edge ) {
9+ int answer = 1 ;
10+
11+ Map <Integer , ArrayList <Integer >> graph = new HashMap <Integer , ArrayList <Integer >>(); // 그래프
12+ int [] degree = new int [n + 1 ];
13+
14+ boolean [] visited = new boolean [n + 1 ]; // 방문 여부
15+
16+ // 그래프 세팅
17+ for (int i = 1 ; i <= n ; i ++) {
18+ graph .put (i ,new ArrayList <Integer >());
19+ }
20+
21+ for (int i = 0 ; i < edge .length ; i ++) {
22+ ArrayList <Integer > v1 = graph .get (edge [i ][0 ]);
23+ ArrayList <Integer > v2 = graph .get (edge [i ][1 ]);
24+
25+ if (!v1 .contains (edge [i ][1 ])) v1 .add (edge [i ][1 ]);
26+ if (!v2 .contains (edge [i ][0 ])) v2 .add (edge [i ][0 ]);
27+ }
28+
29+ Queue <Integer > q = new LinkedList <Integer >();
30+
31+ // 노드 1 부터 시작
32+ q .offer (1 );
33+ visited [1 ] = true ;
34+
35+ // BFS
36+ while (!q .isEmpty ()) {
37+ int v = q .poll ();
38+
39+ for (int i : graph .get (v )) {
40+ if (!visited [i ]) {
41+ degree [i ] = degree [v ] + 1 ;
42+ visited [i ] = true ;
43+ q .offer (i );
44+ }
45+ }
46+ }
47+
48+ // 가장 멀리 있는 노드 개수
49+ int max = 0 ;
50+ for (int i : degree ) {
51+ if (max < i ) {
52+ answer = 1 ;
53+ max = i ;
54+ } else if (max == i ) {
55+ answer ++;
56+ }
57+ }
58+
59+ return answer ;
60+ }
61+ }
Original file line number Diff line number Diff line change 5555---
5656
5757- [ 그래프] ( ./Graph )
58- - leetcode 207
58+ - leetcode 207
59+ - Programmer1 가장 먼 노드
You can’t perform that action at this time.
0 commit comments