Skip to content

Commit d3c182a

Browse files
committed
improve: optimize space complexity using matrix markers
1 parent 69b05ea commit d3c182a

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

β€Žset-matrix-zeroes/KwonNayeon.pyβ€Ž

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
Β (0)