N * N 크기의 2차원 배열을 시계방향으로 회전해보자
간단하게 3*3 배열을 생각해보면 금방 답이 나온다.
| (0, 0) | (0, 1) | (0, 2) |
| (1, 0) | (1, 1) | (1, 2) |
| (2, 0) | (2, 1) | (2, 2) |
🔁 위 배열을 90도 시계방향으로 회전하면...
| (2, 0) | (1, 0) | (0, 0) |
| (2, 1) | (1, 1) | (0, 1) |
| (3, 0) | (1, 2) | (0, 2) |
다음과 같이 회전한 배열의 [c][N-r-1] 위치에 기존 배열 [r][c] 값이 위치하게 된다.
코드는 다음과 같다.
static void rotateRight(int[][] arr){
int[][] rotated = new int[N][N];
for(int r=0; r<N; r++){
for(int c=0; c<N; c++){
rotated[c][N - r - 1] = arr[r][c];
}
}
}
🔄 같은 식으로 90도 반시계방향으로 회전할 때는...
회전한 배열의 [N-c-1][r] 위치에 기존 배열 [r][c] 값이 위치하게 된다.
코드는 다음과 같다.
static void rotateLeft(int[][] arr){
int[][] rotated = new int[N][N];
for(int r=0; r<N; r++){
for(int c=0; c<N; c++){
rotated[N - c - 1][r] = arr[r][c];
}
}
}'공부한 거 > 알고리즘' 카테고리의 다른 글
| [완전 탐색] 조합 (0) | 2023.11.21 |
|---|---|
| [완전 탐색] 순열 (0) | 2023.10.12 |