File tree Expand file tree Collapse file tree
백준/Silver/11724. 연결 요소의 개수 Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55### 성능 요약
66
7- 메모리: 101008 KB, 시간: 912 ms
7+ 메모리: 109244 KB, 시간: 704 ms
88
99### 분류
1010
1111그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색
1212
1313### 제출 일자
1414
15- 2024년 1월 29일 09:52:26
15+ 2026년 2월 19일 16:50:32
1616
1717### 문제 설명
1818
Original file line number Diff line number Diff line change 11// /dev/stdin
22const fs = require ( "fs" ) ;
3- let input = fs . readFileSync ( '/dev/stdin' ) . toString ( ) . trim ( ) . split ( '\n' )
3+ let input = fs
4+ . readFileSync ( "/dev/stdin" )
5+ . toString ( )
6+ . split ( "\n" )
7+ . map ( ( x ) => x . replace ( "\r" , "" ) ) ;
48
5- const [ n , m ] = input [ 0 ] . split ( ' ' ) . map ( Number ) ;
9+ const [ N , M ] = input [ 0 ] . split ( " " ) . map ( Number ) ;
610
7- // 노드에 이어진 배열 만들기
8- const arr = [ ] ;
9- for ( let i = 0 ; i <= n ; i ++ ) {
10- arr [ i ] = [ ]
11- }
11+ const graph = Array . from ( { length : N + 1 } , ( ) => Array ( ) ) ;
1212
13- const visited = [ ] ;
14- for ( let i = 1 ; i <= n ; i ++ ) {
15- visited [ i ] = false ;
13+ for ( let i = 1 ; i <= M ; i ++ ) {
14+ const [ x , y ] = input [ i ] . split ( " " ) . map ( Number ) ;
15+ graph [ x ] . push ( y ) ;
16+ graph [ y ] . push ( x ) ;
1617}
1718
18- // 배열에 채워넣기
19- // 방문 테이블 만들기
20- for ( let i = 1 ; i <= m ; i ++ ) {
21- const [ u , v ] = input [ i ] . split ( ' ' ) . map ( Number )
22- arr [ u ] . push ( v )
23- arr [ v ] . push ( u )
24- }
25- // console.log(arr)
26- // console.log(visited)
27-
28- let cnt = 0 ;
29- for ( let i = 1 ; i < arr . length ; i ++ ) {
30- if ( visited [ i ] == false ) {
31- dfs ( i )
32- cnt ++
19+ const visited = Array ( N ) . fill ( false ) ;
20+
21+ let result = 0 ;
22+
23+ for ( let i = 1 ; i <= N ; i ++ ) {
24+ if ( ! visited [ i ] ) {
25+ result ++ ;
26+ visited [ i ] = true ;
27+ dfs ( i ) ;
3328 }
34-
3529}
3630
37- function dfs ( node ) {
38- // console.log('node',node)
39- visited [ node ] = true ;
40- for ( const item of arr [ node ] ) {
41- if ( visited [ item ] == false ) {
42- dfs ( item )
31+ function dfs ( i ) {
32+ for ( const next of graph [ i ] ) {
33+ if ( ! visited [ next ] ) {
34+ visited [ next ] = true ;
35+ dfs ( next ) ;
4336 }
4437 }
4538}
46- console . log ( cnt )
4739
40+ console . log ( result ) ;
You can’t perform that action at this time.
0 commit comments