Difficulty: MEDIUM
Categories: ๋ฐฐ์ด/๋ฌธ์์ด
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length, n = matrix[0].length;
boolean firstRowZero = false, firstColZero = false;
for (int i = 0; i < m; i++) if (matrix[i][0] == 0) firstColZero = true;
for (int j = 0; j < n; j++) if (matrix[0][j] == 0) firstRowZero = true;
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (matrix[i][j] == 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for (int i = 1; i < m; i++) {
if (matrix[i][0] == 0) {
for (int j = 1; j < n; j++) matrix[i][j] = 0;
}
}
for (int j = 1; j < n; j++) {
if (matrix[0][j] == 0) {
for (int i = 1; i < m; i++) matrix[i][j] = 0;
}
}
if (firstRowZero) {
for (int j = 0; j < n; j++) matrix[0][j] = 0;
}
if (firstColZero) {
for (int i = 0; i < m; i++) matrix[i][0] = 0;
}
}
}
[์๋ ํ์ด ยท gpt-4.1-mini] ํ๊ณผ ์ด์ 0์ด ํ๋๋ผ๋ ์์ผ๋ฉด ๊ทธ ํ๊ณผ ์ด ์ ์ฒด๋ฅผ 0์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค. ์ถ๊ฐ ๊ณต๊ฐ ์์ด ํด๊ฒฐํ๋ ค๋ฉด ์ฒซ ํ๊ณผ ์ฒซ ์ด์ ๋งํน์ฉ์ผ๋ก ์ฌ์ฉํ๊ณ , ๋ณ๋์ ๋ณ์๋ก ์ฒซ ํ๊ณผ ์ฒซ ์ด์ 0์ด ์๋์ง ์ฒดํฌํ ๋ค, ๋์ค์ ํด๋น ํ๊ณผ ์ด์ 0์ผ๋ก ๋ฐ๊พผ๋ค. ์๊ฐ O(m*n) ยท ๊ณต๊ฐ O(1) ์ฃผ์: ์ฒซ ํ๊ณผ ์ฒซ ์ด์ ๋งํน์ฉ์ผ๋ก ์ฐ๋ฉด์ ์๋ ์ฒซ ํ/์ด์ 0์ด ์์๋์ง ๋ณ๋๋ก ๊ผญ ์ฒดํฌํด์ผ ํ๋ค.