유형: 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 |