@@ -73,3 +73,44 @@ def setZeroes(self, matrix: List[List[int]]) -> None:
73
73
for c in zero_cols :
74
74
for i in range (len (matrix )):
75
75
matrix [i ][c ] = 0
76
+
77
+ """
78
+ Time Complexity: O(m*n)
79
+
80
+ Space Complexity: O(1)
81
+ - μΆκ°μ μΈ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νμ§ μκ³ μ²« νκ³Ό μ΄μ λ§μ»€λ‘ νμ©νμ¬ ν΄κ²°
82
+ - first_row_zero, first_col_zero λ λ³μλ§ μ¬μ©
83
+
84
+ νμ΄ λ°©λ²:
85
+ 1. 첫 νκ³Ό 첫 μ΄μ 0 μ¬λΆλ₯Ό λ³μμ μ μ₯ (λμ€μ μ²λ¦¬νκΈ° μν¨)
86
+ 2. 첫 νκ³Ό 첫 μ΄μ λ§μ»€λ‘ μ¬μ©: νλ ¬μ 0 μμΉλ₯Ό 첫 ν/μ΄μ νμ
87
+ 3. νμλ 0μ κΈ°μ€μΌλ‘ λλ¨Έμ§ νλ ¬μ λ³κ²½ (ν/μ΄ μ 체λ₯Ό 0μΌλ‘ λ³κ²½)
88
+ 4. μ μ₯ν΄λ λ³μλ‘ μ²« ν/μ΄ μ²λ¦¬ (μλ 0μ΄μλ ν/μ΄ μ²λ¦¬)
89
+ """
90
+ class Solution :
91
+ def setZeroes (self , matrix : List [List [int ]]) -> None :
92
+ # 첫 ν/μ΄μ 0 μ¬λΆ μ μ₯
93
+ first_row_zero = any (matrix [0 ][c ] == 0 for c in range (len (matrix [0 ])))
94
+ first_col_zero = any (matrix [r ][0 ] == 0 for r in range (len (matrix )))
95
+
96
+ # 0μ΄ μλ μμΉμ 첫 ν/μ΄μ νμ
97
+ for r in range (1 , len (matrix )):
98
+ for c in range (1 , len (matrix [0 ])):
99
+ if matrix [r ][c ] == 0 :
100
+ matrix [r ][0 ] = 0 # 첫 μ΄μ νμ
101
+ matrix [0 ][c ] = 0 # 첫 νμ νμ
102
+
103
+ # νμλ 0μ κΈ°μ€μΌλ‘ λλ¨Έμ§ μμΉ λ³κ²½
104
+ for r in range (1 , len (matrix )):
105
+ for c in range (1 , len (matrix [0 ])):
106
+ if matrix [r ][0 ] == 0 or matrix [0 ][c ] == 0 :
107
+ matrix [r ][c ] = 0
108
+
109
+ # 첫 ν/μ΄ μ²λ¦¬
110
+ if first_row_zero :
111
+ for i in range (len (matrix [0 ])):
112
+ matrix [0 ][i ] = 0
113
+
114
+ if first_col_zero :
115
+ for i in range (len (matrix )):
116
+ matrix [i ][0 ] = 0
0 commit comments