diff --git a/number-of-islands/HerrineKim.js b/number-of-islands/HerrineKim.js new file mode 100644 index 000000000..c67f9b4ab --- /dev/null +++ b/number-of-islands/HerrineKim.js @@ -0,0 +1,38 @@ +// 시간 복잡도: O(m * n) +// 공간 복잡도: O(m * n) + +/** + * @param {character[][]} grid + * @return {number} + */ +var numIslands = function (grid) { + if (!grid || grid.length === 0) return 0; + + const rows = grid.length; + const cols = grid[0].length; + let islandCount = 0; + + const dfs = (row, col) => { + if (row < 0 || row >= rows || col < 0 || col >= cols || grid[row][col] === '0') { + return; + } + + grid[row][col] = '0'; + + dfs(row - 1, col); + dfs(row + 1, col); + dfs(row, col - 1); + dfs(row, col + 1); + }; + + for (let i = 0; i < rows; i++) { + for (let j = 0; j < cols; j++) { + if (grid[i][j] === '1') { + islandCount++; + dfs(i, j); + } + } + } + + return islandCount; +}; diff --git a/set-matrix-zeroes/HerrineKim.js b/set-matrix-zeroes/HerrineKim.js new file mode 100644 index 000000000..fdf1f830a --- /dev/null +++ b/set-matrix-zeroes/HerrineKim.js @@ -0,0 +1,35 @@ +// 시간 복잡도: O(m * n) +// 공간 복잡도: O(m + n) + +/** + * @param {number[][]} matrix + * @return {void} Do not return anything, modify matrix in-place instead. + */ +var setZeroes = function (matrix) { + if (!matrix || matrix.length === 0) return []; + + const rows = matrix.length; + const cols = matrix[0].length; + + const zeroRows = new Array(rows).fill(false); + const zeroCols = new Array(cols).fill(false); + + for (let row = 0; row < rows; row++) { + for (let col = 0; col < cols; col++) { + if (matrix[row][col] === 0) { + zeroRows[row] = true; + zeroCols[col] = true; + } + } + } + + for (let row = 0; row < rows; row++) { + for (let col = 0; col < cols; col++) { + if (zeroRows[row] || zeroCols[col]) { + matrix[row][col] = 0; + } + } + } + + return matrix; +};