[LeetCode]Rotate Image

2023. 5. 9. 19:05·SW개발/코딩테스트

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

 

Rotate Image - LeetCode

Can you solve this real interview question? Rotate Image - You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place [https://en.wikipedia.org/wiki/In-place_algorithm], which m

leetcode.com

 

문제 분석

주어진 이미지를 90도 시계방향으로 돌리는 경우 숫자가 어떻게 변해있는지를 구하는 문제입니다.

 

처음 시도한 답안

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        matrix_len = len(matrix)

        matrix.reverse()
        """
        matrix.reverse()
        1 2 3      7 8 9
        4 5 6  =>  4 5 6 
        7 8 9      1 2 3

        after two for loop.
        i = 0
        7 8 9      7 4 1
        4 5 6  =>  8 5 6 
        1 2 3      9 2 3

        i = 1
        7 4 1      7 4 1
        8 5 6  =>  8 5 2 
        9 2 3      9 6 3

        i = 2
        7 4 1      7 4 1
        8 5 2  =>  8 5 2 
        9 6 3      9 6 3
        """

        for i in range(matrix_len):
            for j in range(i, matrix_len):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

접근 방법

  1. matrix에 담긴 행의 순서를 거꾸로 뒤집습니다.
  2. 이중 반복문을 통해서 (0, 0) & (0, 0), (0, 1) & (1, 0), (0, 2) & (2, 0) 의 쌍을 서로 스왑합니다. 
    (i,j 를 서로 스왑합니다, 즉 대각선을 중심으로 뒤집는 것과 같습니다)

처음에 접근한 방식은 행을 반복하면서 바꿔야할 x 좌표와 y 좌표를 구해서 변경하려고 했습니다. 하지만 이렇게 하다보니 추가적인 저장공간을 사용하지 않고서는 모든 요소에 맞는 숫자를 구할 수 없었습니다. 문제의 조건에 다른 2D maxtrix를 할당하지 말라는 것이 있으므로 솔루션을 참고해보았습니다.

 

솔루션의 접근법은 주석을 통해서 쉽게 이해할 수 있습니다. 주어진 이미지를 조금 더 깊게 살펴보았다면 위와 같은 아이디어를 생각해낼 수도 있지 않았을까 합니다.

 

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[LeetCode]Maximum Subarray  (0) 2023.05.21
[LeetCode]Group Anagrams  (0) 2023.05.10
[LeetCode]Permutations  (0) 2023.05.08
[LeetCode]Jump Game II  (0) 2023.05.07
[LeetCode]Combination Sum  (0) 2023.05.06
'SW개발/코딩테스트' 카테고리의 다른 글
  • [LeetCode]Maximum Subarray
  • [LeetCode]Group Anagrams
  • [LeetCode]Permutations
  • [LeetCode]Jump Game II
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (309)
      • SW개발 (305)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (3)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컨트리뷰터
    g
    배공파용
    오픈소스
    django
    어플리케이션
    배달비 공유
    음식
    트리 #AVL #알고리즘 #자료구조
    배달
    플레이스토어
    Contributor
    라이프 스타일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[LeetCode]Rotate Image
상단으로

티스토리툴바