Skip to content

Commit 721c972

Browse files
committed
feat: [Week 06-5] solve spiral-matrix
1 parent d60f811 commit 721c972

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

spiral-matrix/Chaedie.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"""
2+
Solution:
3+
1) 좌우 상하의 경계를 좁혀가며 순회한다.
4+
2) 탈출 조건으로 result 의 사이즈가 matrix 의 원소 갯수가 같아지는지 확인한다.
5+
(탈출 조건을 좌우 상하 경계가 넘어가는 시험을 기준으로 삼은 솔루션을 봤지만, 정확히 이해는 되지 않아 사이즈 비교로 진행했습니다.)
6+
Time: O(m * n)
7+
Space: O(1)
8+
"""
9+
10+
11+
class Solution:
12+
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
13+
result = []
14+
left, right = 0, len(matrix[0])
15+
top, bottom = 0, len(matrix)
16+
17+
while left < right and top < bottom:
18+
for i in range(left, right):
19+
result.append(matrix[top][i])
20+
top += 1
21+
22+
if len(result) == len(matrix[0]) * len(matrix):
23+
break
24+
25+
for i in range(top, bottom):
26+
result.append(matrix[i][right - 1])
27+
right -= 1
28+
29+
if len(result) == len(matrix[0]) * len(matrix):
30+
break
31+
32+
for i in range(right - 1, left - 1, -1):
33+
result.append(matrix[bottom - 1][i])
34+
bottom -= 1
35+
36+
if len(result) == len(matrix[0]) * len(matrix):
37+
break
38+
39+
for i in range(bottom - 1, top - 1, -1):
40+
result.append(matrix[i][left])
41+
left += 1
42+
43+
if len(result) == len(matrix[0]) * len(matrix):
44+
break
45+
46+
return result

0 commit comments

Comments
 (0)