Skip to content

Commit 8ec2f64

Browse files
committed
Set Matrix Zeroes Solution
1 parent d72efff commit 8ec2f64

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* ํ–‰๋ ฌ์—์„œ 0์„ ์ฐพ์•„, ํ•ด๋‹น ์š”์†Œ์˜ ์ „์ฒด ํ–‰๊ณผ ์—ด์„ 0์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฌธ์ œ
3+
*
4+
* ํŒ”๋กœ์šฐ์—…: O(1) ๊ณต๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ
5+
* - ์›๋ž˜ ํ–‰๋ ฌ์˜ ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ ์‚ฌ์šฉ, 0์ด ์žˆ๋Š” ํ–‰๊ณผ ์—ด์„ ํ‘œ์‹œ(์ถ”๊ฐ€ ๊ณต๊ฐ„์‚ฌ์šฉ ์—†์ด)
6+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•:
7+
* 1. ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์— 0์ด ์žˆ๋Š”์ง€ ํ™•์ธ, ์žˆ๋‹ค๋ฉด ๋ณ„๋„์˜ ๋ณ€์ˆ˜์— ์ €์žฅ
8+
* 2. ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ–‰๋ ฌ์„ ์ˆœํšŒ โžก๏ธ 0์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜์˜ ํ–‰๊ณผ ์—ด์„ 0์œผ๋กœ ์„ค์ •
9+
* 3. ์„ค์ •๋œ ๋งˆ์ปค ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด๋ถ€ ํ–‰๋ ฌ์˜ ์š”์†Œ๋ฅผ 0์œผ๋กœ ์—…๋ฐ์ดํŠธ
10+
*
11+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(m*n) โžก๏ธ ํ–‰๋ ฌ์„ ๋‘๋ฒˆ ์ˆœํšŒ
12+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(1) โžก๏ธ ์ถ”๊ฐ€ ๋ฐฐ์—ด ์‚ฌ์šฉ ์•ˆํ•จ
13+
*/
14+
/**
15+
* @param {number[][]} matrix
16+
* @return {void} Do not return anything, modify matrix in-place instead.
17+
*/
18+
var setZeroes = function (matrix) {
19+
if (!matrix || matrix.length === 0 || matrix[0].length === 0) return;
20+
21+
const m = matrix.length;
22+
const n = matrix[0].length;
23+
24+
// ํ•œ๋ฒˆ์˜ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ ์ฒดํฌ
25+
let firstRowHasZero = false;
26+
let firstColHasZero = false;
27+
28+
// ์ฒซ๋ฒˆ์งธ ํ–‰ ์ฒดํฌ
29+
for (let j = 0; j < n; j++) {
30+
if (matrix[0][j] === 0) {
31+
firstRowHasZero = true;
32+
break;
33+
}
34+
}
35+
// ์ฒซ๋ฒˆ์งธ ์—ด ์ฒดํฌ
36+
for (let i = 0; i < m; i++) {
37+
if (matrix[i][0] === 0) {
38+
firstColHasZero = true;
39+
break;
40+
}
41+
}
42+
43+
// ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ–‰๋ ฌ์„ ์ˆœํšŒ, ๋งˆ์ปค ์„ค์ •
44+
for (let i = 1; i < m; i++) {
45+
for (let j = 1; j < n; j++) {
46+
if (matrix[i][j] === 0) {
47+
matrix[i][0] = 0; // ํ•ด๋‹น ํ–‰์˜ ์ฒซ๋ฒˆ์งธ ์—ด์„ 0์œผ๋กœ ๋งˆํ‚น
48+
matrix[0][j] = 0; // ํ•ด๋‹น ์—ด์˜ ์ฒซ๋ฒˆ์งธ ํ–‰์„ 0์œผ๋กœ ๋งˆํ‚น
49+
}
50+
}
51+
}
52+
// ๋งˆ์ปค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚ด๋ถ€ ํ–‰๋ ฌ์˜ ์š”์†Œ๋ฅผ 0์œผ๋กœ ์—…๋ฐ์ดํŠธ
53+
for (let i = 1; i < m; i++) {
54+
for (let j = 1; j < n; j++) {
55+
if (matrix[i][0] === 0 || matrix[0][j] === 0) {
56+
matrix[i][j] = 0;
57+
}
58+
}
59+
}
60+
// ์ฒซ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ ์—…๋ฐ์ดํŠธ
61+
if (firstRowHasZero) {
62+
for (let j = 0; j < n; j++) {
63+
matrix[0][j] = 0;
64+
}
65+
}
66+
if (firstColHasZero) {
67+
for (let i = 0; i < m; i++) {
68+
matrix[i][0] = 0;
69+
}
70+
}
71+
};

0 commit comments

Comments
ย (0)