Skip to content

Commit 69b05ea

Browse files
committed
feat: add alternative solution
1 parent 0c16934 commit 69b05ea

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

set-matrix-zeroes/KwonNayeon.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
88
Time Complexity: O(m*n)
99
- m은 행, n은 열을 의미
10-
- 0 찾기 - O(m*n)
11-
- 행과 열 변환 - O(m*n)
10+
- 0 찾기: O(m*n)
11+
- 행과 열 변환: O(m*n)
1212
1313
Space Complexity: O(m*n)
1414
- zeros 배열이 최대 m*n 크기까지 저장 가능
1515
1616
풀이 방법:
1717
1. 0 위치 저장
1818
2. 저장된 0의 행과 열을 모두 0으로 변환
19-
3. 주의점 - 행렬 값 탐색과 변경을 동시에 수행하면 원래 어떤 값이 0이었는지 구분하기 어려워짐
19+
3. 주의점: 행렬 값 탐색과 변경을 동시에 수행하면 원래 어떤 값이 0이었는지 구분하기 어려워짐
2020
"""
2121

2222
class Solution:
@@ -36,3 +36,40 @@ def setZeroes(self, matrix: List[List[int]]) -> None:
3636
matrix[r][i] = 0
3737
for i in range(len(matrix)):
3838
matrix[i][c] = 0
39+
40+
"""
41+
Time Complexity: O(m*n)
42+
- 행렬 순회: O(m*n)
43+
- 행과 열 변환: O(m*n)
44+
45+
Space Complexity: O(m+n)
46+
- zero_rows: O(m)
47+
- zero_cols: O(n)
48+
49+
풀이 방법:
50+
1. set 자료구조를 활용하여 중복 제거
51+
2. 행과 열 정보를 분리 저장하여 메모리를 효율적으로 사용
52+
3. 행과 열을 독립적으로 처리하여 불필요한 반복 연산 제거
53+
"""
54+
55+
class Solution:
56+
def setZeroes(self, matrix: List[List[int]]) -> None:
57+
"""
58+
Do not return anything, modify matrix in-place instead.
59+
"""
60+
zero_rows = set()
61+
zero_cols = set()
62+
63+
for r in range(len(matrix)):
64+
for c in range(len(matrix[0])):
65+
if matrix[r][c] == 0:
66+
zero_rows.add(r)
67+
zero_cols.add(c)
68+
69+
for r in zero_rows:
70+
for i in range(len(matrix[0])):
71+
matrix[r][i] = 0
72+
73+
for c in zero_cols:
74+
for i in range(len(matrix)):
75+
matrix[i][c] = 0

0 commit comments

Comments
 (0)