코테준비 - Number of Islands

정상화·2023년 2월 26일

LeetCode

목록 보기
170/222

Number of Islands

class Solution {
public:
    int numIslands(vector<vector<char>> &grid) {
        int m = grid.size();
        int n = grid.front().size();

        int cnt = 0;
        vector<vector<int>> visited(m, vector<int>(n, 0));
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid.at(i).at(j) == '1' && visited.at(i).at(j) == 0) {
                    dfs(grid, visited, m, n, i, j, ++cnt);
                }
            }
        }
        return cnt;
    }

    void dfs(vector<vector<char>> &grid, vector<vector<int>> &visited, int m, int n,
             int i, int j, int &cnt) {
        if (i >= m || j >= n || i < 0 || j < 0
            || grid.at(i).at(j) == '0' || visited.at(i).at(j) > 0) {
            return;
        }
        visited.at(i).at(j) = cnt;
        dfs(grid, visited, m, n, i + 1, j, cnt);
        dfs(grid, visited, m, n, i, j + 1, cnt);
        dfs(grid, visited, m, n, i - 1, j, cnt);
        dfs(grid, visited, m, n, i, j - 1, cnt);
    }
};
profile
백엔드 희망

0개의 댓글