[JS] Number of Provinces

2022. 8. 12. 12:53

🔒 문제 (LeetCode 547)

There are n cities. Some of them are connected, while some are not. If city a is connected directly with city b, and city b is connected directly with city c, then city a is connected indirectly with city c.

A province is a group of directly or indirectly connected cities and no other cities outside of the group.

You are given an n x n matrix isConnected where isConnected[i][j] = 1 if the ith city and the jth city are directly connected, and isConnected[i][j] = 0 otherwise.

Return the total number of provinces.

Constraints:

  • 1 <= n <= 200
  • n == isConnected.length
  • n == isConnected[i].length
  • isConnected[i][j] is 1 or 0.
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]

 

🌊 입출력

Example 1:

Input: isConnected = [[1,1,0],[1,1,0],[0,0,1]]
Output: 2

Example 2:

Input: isConnected = [[1,0,0],[0,1,0],[0,0,1]]
Output: 3

 


 

🔑 해결

🌌 알고리즘 - DFS

/**
 * @param {number[][]} isConnected
 * @return {number}
 */
var findCircleNum = function(isConnected) {
    let count = 0;
    const n = isConnected.length;
    let visited = new Array(n).fill(false);
    
    const dfs = (cur) => {
        if(visited[cur]) return;
        
        visited[cur] = true;
        
        for(let i = 0; i < n; i++) {
            if(isConnected[cur][i] === 1 && !visited[i])
                dfs(i);
        }
    }
    
    for(let i = 0; i < n; i++) {
        if(!visited[i]) {
            dfs(i);
            count++;
        }
    }
    
    return count;
};

'코딩테스트 (JS) > DFS | BFS' 카테고리의 다른 글

[JS] Shortest Path in Binary Matrix  (0) 2022.08.18
[JS] Subtree of Another Tree  (0) 2022.08.13
[JS] Number of Islands  (0) 2022.08.12
[JS] Letter Case Permutation  (0) 2022.07.31
[JS] Permutations  (0) 2022.07.31

+ Recent posts