본문 바로가기
코딩테스트/코딩테스트 문제

코딩테스트: (LeetCode) 48. Rotate Image 파이썬 코드/풀이

by 공부가싫다가도좋아 2022. 8. 30.
반응형

1. 문제

2. 규칙찾기

3. 코드


1. 문제

아래와 같은 n*n 크기의 정사각형을 90도로 회전했을때의 결과를 출력해라.

단, 제공하는 matrix리스트 외의 다른 리스트를 만들어서 할당하지 말고 바로 matrix에서 정답을 도출시켜라.

 

아래 링크 클릭 후 로그인을 하시면 문제를 바로 확인해보실 수 있습니다.

https://leetcode.com/problems/rotate-image/

 

Rotate Image - 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

 


2. 규칙 찾기

3 * 3 정사각형 일 때
90도 회전 전 위치 90도 회전 후 위치
(0,0) (0,2)
(0,1) (1,2)
(0,2) (2,2)
(1,0) (0,1)
(1,1) (1,1)
(1,2) (2,1)
(2,0) (0,0)
(2,1) (1,0)
(2,2) (2,0)

* 자세한 설명은 더보기에

더보기

위 표를 자세히 설명하자면,

matrix[0][0]배열에 있던 숫자는 90도 회전 후, matrix[0][2]위치에 가게 됩니다.

matrix[0][1]배열에 있던 숫자는 90도 회전 후, matrix[1][2]위치에 가게 됩니다.

matrix[0][2]배열에 있던 숫자는 90도 회전 후, matrix[2][2]위치에 가게 됩니다.

... ...

 

4 * 4 정사각형 일 때
90도 회전 전 위치 90도 회전 후 위치
(0,0) (0,3)
(0,1) (1,3)
(0,2) (2,3)
(0,3) (3,3)
(1,0) (0,2)
(1,1) (1,2)
(1,2) (2,2)
(1,3) (3,2)
(2,0) (0,1)
(2,1) (1,1)
(2,2) (2,1)
(2,3) (3,1)
(3,0) (0,0)
(3,1) (1,0)
(3,2) (2,0)
(3,3) (3,0)
더보기

위 표를 자세히 설명하자면, 3*3과 마찬가지로

matrix[0][0]배열에 있던 숫자는 90도 회전 후, matrix[0][3]위치에 가게 됩니다.

matrix[0][1]배열에 있던 숫자는 90도 회전 후, matrix[1][3]위치에 가게 됩니다.

matrix[0][2]배열에 있던 숫자는 90도 회전 후, matrix[2][3]위치에 가게 됩니다.

matrix[0][3]배열에 있던 숫자는 90도 회전 후, matrix[3][3]위치에 가게 됩니다.

... ...

 

90도 회전 후 위치를 (x, y)라 할때,

x 는 0 부터 n-1 숫자를 n번씩 반복하고,

y는 n-1부터 n번씩 반복한다음, 1씩 감소하고 있습니다. 

 


3. 코드

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n=len(matrix)
        dic={} #숫자 저장
        d=n-1
        for i in range(n):
            for j in range(n):
                dic[(j,d-i)]=matrix[j][d-i] #dic에 숫자를 저장 해줌.
                
                if (i,j) in dic:
                    matrix[j][d-i]=dic[(i,j)]
                else:
                    matrix[j][d-i]=matrix[i][j]
                    
               # 위에서 찾은 규칙과같이, 90도 회전 시킨 후의 위치안에 차례대로 숫자를 집어 넣음.

 

반응형

댓글