Skip to content

Commit a739c2e

Browse files
authored
[ PS ] : Number of Islands
1 parent 054c2d9 commit a739c2e

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ 2์ฐจ์› ๊ฒฉ์ž์—์„œ ์„ฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
3+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(m * n) (๋ชจ๋“  ์›์†Œ๋ฅผ ์ˆœํšŒํ•ด์•ผ ํ•จ)
4+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(m * n) (bfs์˜ ๊ณต๊ฐ„๋ณต์žก๋„์— ๋”ฐ๋ฆ„)
5+
* @param {character[][]} grid
6+
* @return {number}
7+
*/
8+
const numIslands = function (grid) {
9+
let num = 0;
10+
11+
for (let r = 0; r < grid.length; r++) {
12+
for (let c = 0; c < grid[0].length; c++) {
13+
if (grid[r][c] === '1') {
14+
bfs(grid, r, c);
15+
num += 1;
16+
}
17+
}
18+
}
19+
20+
return num;
21+
};
22+
23+
// grid์˜ ์ฃผ์–ด์ง„ ์ขŒํ‘œ์—์„œ bfs๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ฐฉ๋ฌธํ–ˆ์Œ์„ ํ‘œ์‹œ
24+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(m * n) (์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์›์†Œ ์ˆœํšŒ)
25+
// ๊ณต๊ฐ„๋ณต์žก๋„: O(m * n) (์ตœ์•…์˜ ๊ฒฝ์šฐ queue์— ๋ชจ๋“  ์›์†Œ ์ €์žฅ)
26+
function bfs(grid, x, y) {
27+
const queue = [[x, y]];
28+
const dx = [0, 0, 1, -1];
29+
const dy = [1, -1, 0, 0];
30+
const rows = grid.length;
31+
const cols = grid[0].length;
32+
33+
while (queue.length) {
34+
const [r, c] = queue.shift();
35+
36+
for (let i = 0; i < 4; i++) {
37+
const nr = r + dx[i];
38+
const nc = c + dy[i];
39+
40+
if (0 <= nr && nr < rows && 0 <= nc && nc < cols && grid[nr][nc] === '1') {
41+
queue.push([nr, nc]);
42+
grid[nr][nc] = '0';
43+
}
44+
}
45+
}
46+
}

0 commit comments

Comments
ย (0)