ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] modify matrix in-place instead
    Programing/Python 2020. 7. 7. 22:50

    문제 풀이를 하다보면 함수 리턴을 통해 결과를 도출하는 것이 아니라 인풋으로 전달되는 변수에 저장된 값을 직접 변경해야 하는 경우가 있습니다.

    예를 들어 Leetcode 48번 문제의 경우 Return type은 None이로 input 으로 전달되는 matrix 리스트를 직접 조작을 해야 합니다.

    그런데 이때 아래 주석처리된 matrix = ...  와 같은 선언이 함수내에 존재하게 된다면 input 으로 전달된 matrix가 아닌 함수내에서 새로 정의된 로컬 변수 matrix가 새로 생성이 됩니다. 따라서 함수가 종료된 이후에도 input으로 전달된 matrix 리스트는 아무런 변경이 없게 됩니다.

    그러므로 인풋 변수를 직접 변경할 경우에는 동일 이름의 로컬변수가 생성되지 않도록 주의를 기울여야 할 것입니다.

    class Solution:
        def rotate(self, matrix: List[List[int]]) -> None:
            """
            Do not return anything, modify matrix in-place instead.
            """
            tmp = []
            _n = len(matrix)
            for idx1 in range(_n):
                _tmp_list = []
                for idx2 in range(_n - 1, -1, -1):
                    _tmp_list.append(matrix[idx2][idx1])
                tmp.append(_tmp_list)
            #matrix = tmp 
            for _idx1 in range(_n):
                matrix[_idx1] = tmp[_idx1]

    'Programing > Python' 카테고리의 다른 글

    List에서 가장 많은 수의 item 찾기  (0) 2020.07.29
    [Python] SimpleHTTPServer  (0) 2020.07.23
    [python] nosetests framework  (0) 2020.06.17
    hex2string  (0) 2020.06.02
    set을 이용한 교집합, 차집합, 합집합  (0) 2019.06.07

    댓글

Designed by Tistory.