Skip to content

Commit c901528

Browse files
authored
week7
1 parent e2721b1 commit c901528

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

set-matrix-zeroes/yeonguchoe.c

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
void setZeroes(int** matrix, int matrixSize, int* matrixColSize) {
2+
3+
int row_size = matrixSize;
4+
int column_size = matrixColSize[0];
5+
6+
bool zero_on_first_row = false;
7+
bool zero_on_first_column = false;
8+
9+
// 첫번째 row에 0이 존재하는지 확인
10+
for (int i = 0; i < column_size; i++) {
11+
if (matrix[0][i] == 0) {
12+
zero_on_first_row = true;
13+
}
14+
}
15+
// 첫번째 column에 0이 존재하는지 확인
16+
for (int i = 0; i < row_size; i++) {
17+
if (matrix[i][0] == 0) {
18+
zero_on_first_column = true;
19+
}
20+
}
21+
22+
// 전체 돌면서 0 발견시 첫번째 row, column에 0으로 표시
23+
for (int i = 0; i < row_size; i++) {
24+
for (int j = 0; j < column_size; j++) {
25+
if (matrix[i][j] == 0) {
26+
matrix[0][j] = 0;
27+
matrix[i][0] = 0;
28+
}
29+
}
30+
}
31+
32+
for (int i = 1; i < column_size; i++) {
33+
if (matrix[0][i] == 0) {
34+
for (int j = 1; j < row_size; j++) {
35+
matrix[j][i] = 0;
36+
}
37+
}
38+
}
39+
40+
for (int i = 1; i < row_size; i++) {
41+
if (matrix[i][0] == 0) {
42+
for (int j = 1; j < column_size; j++) {
43+
matrix[i][j] = 0;
44+
}
45+
}
46+
}
47+
48+
if (zero_on_first_row) {
49+
for (int i = 0; i < column_size; i++) {
50+
matrix[0][i] = 0;
51+
}
52+
}
53+
54+
if (zero_on_first_column) {
55+
for (int i = 0; i < row_size; i++) {
56+
matrix[i][0] = 0;
57+
}
58+
}
59+
}
60+
// 시간 복잡도: O(matrix 크기)
61+
// 공간 복잡도: O(1)

0 commit comments

Comments
 (0)