[Algorithm] 행렬 90도 회전 알고리즘

최지영·2022년 5월 25일
0

✨ 행렬을 90도 돌리는 회전 알고리즘

간단하게 3행 3열 배열을 생성하고 행렬의 값을 90도 회전 시켜보자!

📃 자바로 구현한 행렬 90도 회전 코드


package algo;

/**
 *  행렬 90도 회전 클래스
 */
public class RotateMatrix {
    public static void main(String[] args) {
        int N = 3;
        int M = 3;
        int [][] beforeRotated = new int[M][N];
        int [][] afterRotated = new int[M][N];

        batchMatrixValues(N, M, beforeRotated);
        printMatrixValues(N,M,beforeRotated);
        rotate(N,M,beforeRotated,afterRotated);
        System.out.println("--------------");
        printMatrixValues(N,M,afterRotated);

    }

    /**
     * 
     * @param N 행
     * @param M 렬 
     * @param matrix 회전 전 행렬
     * @param rotated 회전 후 행렬
     */
    private static void rotate(int N, int M, int[][] matrix,int[][] rotated) {
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < N; j++) {
                rotated[j][N-1-i] = matrix[i][j];
            }
        }
    }

    /**
     * 
     * @param N
     * @param M
     * @param matrix
     */
    private static void printMatrixValues(int N, int M, int[][] matrix) {
        for (int i = 0; i< M; i++){
            for (int j = 0; j< N; j++){
                System.out.printf("matrix[%d][%d]=%d\n",i,j,matrix[i][j]);
            }
        }
    }

    /**
     * 
     * @param N
     * @param M
     * @param matrix
     */
    private static void batchMatrixValues(int N, int M, int[][] matrix) {
        for (int i = 0; i< M; i++){
            for (int j = 0; j< N; j++){
                matrix[i][j] = (M*i)+j+1;
            }
        }
    }
}

0개의 댓글