@@ -73,3 +73,44 @@ def setZeroes(self, matrix: List[List[int]]) -> None:
7373 for c in zero_cols :
7474 for i in range (len (matrix )):
7575 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