LeetCode 48. Rotate Image

링크

image

제약조건

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

풀이방법

아… 어렵다. 제자리에서 배열 회전을 한다는게.. 인덱스 조작도 상당히 복잡하다. 일단 너무 모르겠어서 코드를 외워야겠다..

image

코드

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix)
        for i in range(n//2 + n%2):
            for j in range(n//2):
                tmp = matrix[n-1-j][i]
                matrix[n-1-j][i] = matrix[n-1-i][n-1-j]
                matrix[n-1-i][n-1-j] = matrix[j][n-1-i]
                matrix[j][n-1-i] = matrix[i][j]
                matrix[i][j] = tmp    

시간복잡도

O(N)

공간복잡도

O(1), 제자리 정렬이므로..