devLupin / algorithm

PS
1 stars 0 forks source link

2차원 배열 rotate #31

Open devLupin opened 1 year ago

devLupin commented 1 year ago
devLupin commented 1 year ago
void RotateRange(int sx, int sy, int sz) {    // 시작점, 크기
    for(int x = sx; x < sx + sz; x++) {
        for(int y = sy; y < sy + sz; y++) {

            int nx = y - sy;
            int ny = sz - (x - sx) - 1;

            next_board[nx + sx][ny + sy] = board[x][y];
        }
    }
}
devLupin commented 8 months ago
    // 시게방향으로 90도 회전, 오른쪽으로 90도 회전
    public static int[][] rightRotate(int n, int[][] A) {
        int[][] B = new int[n][n];

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                B[i][j] = A[n-j-1][i];
            }
        }

        return B;
    }

    // 반시계 방향으로 90도 회전, 270도, -90도, 왼쪽으로 90도
    public static int[][] leftRotate(int n, int[][] A) {
        int[][] B = new int[n][n];

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                B[i][j] = A[j][n-i-1];
            }
        }

        return B;
    }

    // 위, 아래로 뒤집기
    public static int[][] reverseTopBottom(int n, int[][] A) {
        int[][] B = new int[n][n];

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                B[i][j] = A[n-i-1][j];
            }
        }

        return B;
    }

    // 좌우로 뒤집기 회전
    public static int[][] reverseLeftRight(int n, int[][] A) {
        int[][] B = new int[n][n];

        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                B[i][j] = A[i][n-j-1];
            }
        }

        return B;
    }