File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
number-of-connected-components-in-an-undirected-graph Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * ์ฃผ์ด์ง ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ(์ฐ๊ฒฐ ์์)์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ํจ์
3
+ *
4
+ * @param {number } n - ๋
ธ๋์ ์
5
+ * @param {number[][] } edges - ๊ฐ์ ์ ์ ๋ณด
6
+ * @returns {number } - ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ์ ๊ฐ์
7
+ *
8
+ * ์๊ฐ ๋ณต์ก๋: O(n)
9
+ * - ๋ชจ๋ ๋
ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ์ฌ ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ์ ๊ฐ์๋ฅผ ๊ณ์ฐ
10
+ * ๊ณต๊ฐ ๋ณต์ก๋: O(n)
11
+ * - ์ธ์ ๋ฆฌ์คํธ์ ๋ฐฉ๋ฌธ ๋ฐฐ์ด ์ฌ์ฉ
12
+ */
13
+ function countComponents ( n : number , edges : number [ ] [ ] ) : number {
14
+ // ์ธ์ ๋ฆฌ์คํธ ํํ๋ก ๊ทธ๋ํ ์์ฑ
15
+ const graph : Map < number , number [ ] > = new Map ( ) ;
16
+ for ( let i = 0 ; i < n ; i ++ ) {
17
+ graph . set ( i , [ ] ) ;
18
+ }
19
+ for ( const [ a , b ] of edges ) {
20
+ graph . get ( a ) ?. push ( b ) ;
21
+ graph . get ( b ) ?. push ( a ) ;
22
+ }
23
+
24
+ // ๋ฐฉ๋ฌธ ๋ฐฐ์ด ์์ฑ
25
+ const visited : boolean [ ] = new Array ( n ) . fill ( false ) ;
26
+ let count = 0 ;
27
+
28
+ // ๊น์ด ์ฐ์ ํ์ (DFS)
29
+ const dfs = ( node : number ) : void => {
30
+ visited [ node ] = true ;
31
+ for ( const neighbor of graph . get ( node ) ! ) {
32
+ if ( ! visited [ neighbor ] ) {
33
+ dfs ( neighbor ) ;
34
+ }
35
+ }
36
+ }
37
+
38
+ // ๋ชจ๋ ๋
ธ๋๋ฅผ ์ํํ๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๊ฐ ์์ผ๋ฉด DFS ์ํ
39
+ for ( let i = 0 ; i < n ; i ++ ) {
40
+ if ( ! visited [ i ] ) {
41
+ // ์๋ก์ด ์ฐ๊ฒฐ ์์ ๋ฐ๊ฒฌ
42
+ count ++ ;
43
+ dfs ( i ) ;
44
+ }
45
+ }
46
+
47
+ return count ;
48
+ }
49
+
You canโt perform that action at this time.
0 commit comments