Skip to content

Commit 2116fb0

Browse files
committed
set-matrix-zeroes solution
1 parent b8ce902 commit 2116fb0

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

set-matrix-zeroes/krokerdile.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {void} Do not return anything, modify matrix in-place instead.
4+
*/
5+
var setZeroes = function(matrix) {
6+
const m = matrix.length;
7+
const n = matrix[0].length;
8+
9+
let firstRowHasZero = false;
10+
let firstColHasZero = false;
11+
12+
// 첫 행/열에 0이 있는지 확인
13+
for (let i = 0; i < m; i++) {
14+
if (matrix[i][0] === 0) firstColHasZero = true;
15+
}
16+
for (let j = 0; j < n; j++) {
17+
if (matrix[0][j] === 0) firstRowHasZero = true;
18+
}
19+
20+
// 마커로 0 표시
21+
for (let i = 1; i < m; i++) {
22+
for (let j = 1; j < n; j++) {
23+
if (matrix[i][j] === 0) {
24+
matrix[i][0] = 0; // 해당 행 마킹
25+
matrix[0][j] = 0; // 해당 열 마킹
26+
}
27+
}
28+
}
29+
30+
// 마커 기반으로 행/열 0 처리
31+
for (let i = 1; i < m; i++) {
32+
if (matrix[i][0] === 0) {
33+
for (let j = 1; j < n; j++) {
34+
matrix[i][j] = 0;
35+
}
36+
}
37+
}
38+
for (let j = 1; j < n; j++) {
39+
if (matrix[0][j] === 0) {
40+
for (let i = 1; i < m; i++) {
41+
matrix[i][j] = 0;
42+
}
43+
}
44+
}
45+
46+
// Step 4: 첫 행과 첫 열 처리
47+
if (firstRowHasZero) {
48+
for (let j = 0; j < n; j++) {
49+
matrix[0][j] = 0;
50+
}
51+
}
52+
if (firstColHasZero) {
53+
for (let i = 0; i < m; i++) {
54+
matrix[i][0] = 0;
55+
}
56+
}
57+
};

0 commit comments

Comments
 (0)