코기판

[Leet Code] Transpose Matrix 본문

Problem Solving

[Leet Code] Transpose Matrix

신코기 2022. 6. 26. 22:34

Problem Link : https://leetcode.com/problems/transpose-matrix/

 

Transpose Matrix - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

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

'Problem Solving' 카테고리의 다른 글

[Leet Code] Running Sum of 1D Array  (0) 2022.06.26
Comments