전체를 돌린다는 생각으로 접근하지않고 바깥을 기준으로 잡고 한겹씩 벗겨내어 돌린다고 생각하면 된다.
시작점(start)과 마지막점(end)를 잡고 반복문을 시작한 후
각 변을 전부 옮길 수 있도록 for문을 사용하여 회전 연산을 해주었다.
한 겹씩 오른쪽으로 회전한다고 생각하고 문제를 풀이하면 된다.
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int i = 0; i < n / 2; i++) {
for (int j = 0; j < n-i-1; j++) {
int temp = matrix[i][j];
matrix[i][j] = 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] = temp;
}
}
}