[LeetCode] 48. Rotate Image

donghyeok·2021년 11월 28일
0

알고리즘 문제풀이

목록 보기
6/144

문제 설명

문제 풀이

시간복잡도 : O(n^2)

  • 단순한 시뮬레이션 문제로 사각형 외곽부터 안으로 들어가며 90'회전시킨다.
  • 공간지각력이 점점 퇴화 하는듯..

소스 코드 (JAVA)

class Solution {
    public void swap(int[][] matrix, int x1, int y1, int x2, int y2) {
        int temp = matrix[x1][y1];
        matrix[x1][y1] = matrix[x2][y2];
        matrix[x2][y2] = temp;
    }
    
    public void rotate(int[][] matrix) {
        int totalSize = matrix[0].length;
        //외곽부터 한칸씩 안으로 들어가며 90도 회전시킴.
        for (int i = 0; i < totalSize / 2; i++) {
            //각 사각형에서 4개 지점의 위치를 서로 바꿔줌
            int size = totalSize - 2*i;
            for (int j = 0; j < size - 1; j++) {
                //사각형 윗면을 오른쪽면과 바꿔줌 (i, i + j), (i + j, i + size-1)
                swap(matrix, i, i+j, i+j, i+ size -1);
                //사각형 윗면을 왼쪽면과 바꿔줌 (i, i+j), (i + size - 1 - j, i)
                swap(matrix, i, i+j, i + size - 1 - j, i);
                //사각형 왼쪽면을 아랫면과 바꿔줌 (i + size - 1 - j, i), (i + size -1, i + size - 1 - j)
                swap(matrix, i + size - 1 - j, i, i+size-1, i+size-1-j);
            }
        }
        
    }
}

0개의 댓글