일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C++
- 뉴스
- 오늘의뉴스
- 20201015뉴스
- 20201017뉴스
- 기사헤드라인
- 파이썬
- encoding
- LeetCode #Python #알고리즘 #코딩테스트 #interview
- 알고리즘
- 뉴스헤드라인
- 코테
- MySQL
- 기사
- 20200816뉴스
- 20201018뉴스
- 크롤링
- 백준
- 20201013뉴스
- 헤드라인모음
- json
- 헤드라인
- 헤드라인기사
- 20201016뉴스
- 백준2225
- Python
- 헤드라인뉴스
- 경제뉴스
- 20201011뉴스
- 20200615뉴스
Archives
- Today
- Total
HelloCho
[Python] #54. Spiral Matrix(Medium) 본문
문제
이 문제는 2차원 배열의 데이터를 나선의 모양으로 순회하는 문제이다.
즉...
아래 빨간색의 방향대로 순차적으로 값을 가져오면 된다.
class Solution:
def spiralOrder(self, matrix):
if not matrix:
return []
num_row = len(matrix)
num_col = len(matrix[0])
res = []
zone = 0
num_elements = (num_row * num_col)
while len(res) < num_elements:
# move right
for i in range(zone,num_col-zone):
res.append(matrix[zone][i])
if len(res)==num_elements:
return res
# move down
for row_idx in range(zone+1, num_row-zone):
c = matrix[row_idx][num_col-zone-1]
res.append(c)
if len(res) == num_elements:
return res
# move left
for j in range(num_col-zone-1,zone,-1):
res.append(matrix[num_row-1-zone][j-1])
if len(res) == num_elements:
return res
# move up
for i in range(num_row-2-zone,zone,-1):
res.append(matrix[i][zone])
if len(res) == num_elements:
return res
zone +=1
return res
코드는 순차적으로 방향을 바꾸는 것을 하나씩 구현했다.
결과
32ms, 14mb로 통과 !
'코테 > LeetCode' 카테고리의 다른 글
[Python] 15. 3Sum(Medium) (0) | 2020.09.15 |
---|---|
[Python] #59. Spiral Matrix II(Medium) (0) | 2020.09.11 |
[Python] #28. Implement strStr()(Easy) (0) | 2020.09.06 |
[Python] #27. Remove Element(Easy) (0) | 2020.09.06 |
[Python] #26. Remove Duplicates from Sorted Array(Easy) (0) | 2020.09.06 |
Comments