시간복잡도 : O(n^2)
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);
}
}
}
}