본문 바로가기
공부한 거/알고리즘

[2차원 배열] 90도 회전

by freakFlow 2024. 4. 29.

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