Problem Solving
[Leet Code] Transpose Matrix
신코기
2022. 6. 26. 22:34
Problem Link : https://leetcode.com/problems/transpose-matrix/
My Solution :
class Solution:
def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
m = len(matrix)
n = len(matrix[0])
new_mat = []
for y_idx in range (0, n):
tmp_mat = []
for x_idx in range (0, m):
tmp_mat.append(matrix[x_idx][y_idx])
new_mat.append(tmp_mat)
return new_mat
Submission Result :
Lesson :
1. 한 번에 여러 변수 define 가능
요렇게 쓰면 코드 라인 수를 줄일 수 있겠네
m, n = len(matrix), len(matrix[0])
2. range와 xrange의 차이
>>> import sys
>>> sys.getsizeof(range(10))
152
>>> sys.getsizeof(range(10000))
80072
>>> sys.getsizeof(xrange(10))
40
>>> sys.getsizeof(xrange(10000)
40
출처: https://bluese05.tistory.com/57 [ㅍㅍㅋㄷ:티스토리]
xrange의 경우 하는 일은 range와 비슷하지만, 리스트의 크기와 상관 없이 동일한 사이즈의 메모리를 점유한다.
3. list 초기화 방법
answer matrix 초기화 시 None을 할당하여 크기 먼저 지정해준다.
Python 에서는 C 처럼 먼저 크기 지정이 없는 줄 알았는데, 다음과 같이 해주면 크기 지정이 가능해질 것으로 보인다.
>>> new_mat = [[None] * 2]
>>> print(new_mat)
[[None, None]]
>>> c_idx = 3 # coloumn index
>>> r_idx = 2 # row index
>>> new_mat2 = [[None] * c_idx for _ in xrange(r_idx)]
[[None, None, None], [None, None, None]]
4. enumerate or zip의 사용
* enumerate()함수는 인덱스와 원소를 동시에 접근하면서 루프를 돌릴 수 있는 방법이다.
A = ['a', 'b', 'c', 'd', 'e']
for idx, contents in enumerate(A):
print(f'index = {idx}, contents={contents}')
# output
index = 0, contents=a
index = 1, contents=b
index = 2, contents=c
index = 3, contents=d
index = 4, contents=e