코테

48. Rotate Image

박수연_01 2024. 2. 6. 11:59

유형: matrix

오른쪽으로 90도로 돌리는 반복문을 계속 생각해봤는데 생각이 안나 답지를 참고하며 풀었다. 

1. 먼저 180도로 돌린다. temp[i][j] = temp[j][i]로 만든다.

2. 1번 행렬에서 중간의 세로선기준으로 반을 잘라서 뒤집으면 원하는 행렬이 완성된다. 이를 구현하기 위해 

 

처음시도 (반대로 바꿔버렸다)

  for (int i=0; i<n/2;i++){
        for (int j=0; j<n; j++){
            int temp= matrix[i][j];

             matrix[i][j]= matrix[n-1-i][j];
             matrix[n-1-i][j]=temp;
        }
    }
   }
 

 

 

 

수정 후

 

    for (int i=0; i<n;i++){
        for (int j=0; j<n/2; j++){
            int temp= matrix[i][j];

             matrix[i][j]= matrix[i][n-1-j];
             matrix[i][n-1-j]=temp;
        }
    }
   }

 

전체코드

class Solution {
   public void rotate(int[][] matrix) {
    if (matrix == null || matrix.length <= 1) {
        return;
    }
    int n = matrix.length;
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
    for (int i=0; i<n;i++){
        for (int j=0; j<n/2; j++){
            int temp= matrix[i][j];

             matrix[i][j]= matrix[i][n-1-j];
             matrix[i][n-1-j]=temp;
        }
    }
   }
   
}

'코테' 카테고리의 다른 글

leetcode 215. Kth Largest Element in an Array  (1) 2024.01.05
[leetcode bfs] 199. Binary Tree Right Side View  (0) 2024.01.04