세로와 가로의 길이가 각각 R, M인 2차원 R X M 배열 grid
가 주어졌을 때, '1'
은 땅을 의미하고 '0'
은 물을 의미합니다. 주어진 2차원 배열에 존재하는 섬의 개수를 리턴해야 합니다.
arr.length
는 Rarr[i].length
는 Marr[i][j]
는 0 또는 1number
타입을 리턴해야 합니다.섬
이란 물로 둘러싸여 있는 땅을 말합니다.let grid = [
['0', '1', '1', '1'],
['0', '1', '1', '1'],
['1', '1', '0', '0'],
];
let result = countIslands(grid);
console.log(result); // --> 1
grid = [
['0', '1', '1', '1', '0'],
['0', '1', '0', '0', '0'],
['0', '0', '0', '1', '0'],
['1', '1', '0', '1', '0'],
['1', '1', '0', '1', '0'],
];
result = countIslands(grid);
console.log(result); // --> 3
const countIslands = function (grid) {
if (!grid.length) return 0
let R = grid.length;
let C = grid[0].length
let answer = 0
const visit = (r, c) => {
if (r < 0 || r >= R || c < 0 || c >= C) return
if (grid[r][c] === '0' || grid[r][c] === true) return
grid[r][c] = true
visit(r + 1, c)
visit(r, c + 1)
visit(r, c - 1)
}
for (let i = 0; i < R; i++) {
for (let j = 0; j < C; j++) {
if (grid[i][j] === '1') {
visit(i, j)
answer++
}
}
}
return answer
};