countIslands
2020. 11. 20. 00:20ㆍ알고리즘
- R x M 의 2차원 배열인 grid가 주어졌을 때, '1'은 땅을 의미하고 '0' 은 물을 의미합니다. 주어진 2차원 배열에 존재하는 섬의 개수를 리턴해야 합니다.
const countIslands = function (grid) {
// TODO: 여기에 코드를 작성합니다.
const HEIGHT = grid.length;
const WIDTH = HEIGHT && grid[0].length;
let count = 0;
for (let row = 0; row < HEIGHT; row++) {
for (let col = 0; col < WIDTH; col++) {
if (grid[row][col] === '0') continue;
count++;
searchIsland(row, col);
}
}
// 1이 걸릴 경우 1과 연결될 수 있는 땅들을 다 물로 바꿔서 섬 자체를 없애고 다시 찾는다 그러면 자연스럽게 섬들만 카운트 할 수 있지
function searchIsland(row, col) {
if (row < 0 || col < 0 || row >= HEIGHT || col >= WIDTH) return;
if (grid[row][col] === '0') return;
grid[row][col] = '0';
searchIsland(row - 1, col);
searchIsland(row + 1, col);
searchIsland(row, col - 1);
searchIsland(row, col + 1);
}
return count;
};
'알고리즘' 카테고리의 다른 글
다익스트라 알고리즘? (Dijkstra Algorithm) (2) | 2020.12.31 |
---|---|
가장 큰 수 찾기 -[프로그래머스] (0) | 2020.12.02 |
isPalindromeLL (0) | 2020.11.16 |
(function(){})() 이 구조는?? (0) | 2020.11.11 |
Robot Paths (feat.로봇청소기야 너 굉장히 고생하고 있었구나 ㅠㅠ) (0) | 2020.10.31 |