“Connecting the dots”

Java Study 배열 180도 돌리기 / 배열좌우바꾸기 본문

JAVA

Java Study 배열 180도 돌리기 / 배열좌우바꾸기

kims1997 2023. 4. 12. 16:01
반응형

2023/4월12일수

 

Main

 

package mymain;

 

import myutil.MyArrayChange;

import myutil.MyArrays2;

 

public class MyMain_배열22222_변환 {

 

public static void main(String[] args) {

 

 

int [][] src =new int[5][5];

 

MyArrays2.set(src);

 

System.out.println("---[원본]---");

MyArrays2.display_array(src);

 

//오른쪽 90도 회전시키기

int [][] dest = MyArrayChange.rotate_right_90(src);

System.out.println("---[Rotage Right 90]---");

MyArrays2.display_array(dest);

 

//좌우 뒤집기

dest = MyArrayChange.flip_left_right(src);

        System.out.println("---[Flip Left-Right]---");

        MyArrays2.display_array(dest);

 

//180도 회전시키기

  dest = MyArrayChange.rotate_180(src);

        System.out.println("---[Rotate 180]---");

        MyArrays2.display_array(dest);

    }

 

}

 


Util

 

package myutil;

 

public class MyArrayChange {

 

//오른쪽 90도 회전시키기

public static int[][] rotate_right_90(int [][] src) {

rotate_right_90 메소드는 2차원 정수형 배열 src를 오른쪽으로 90도 회전시키는 메소드이다

int rows =src.length;//행수

int cols =src[0].length;//열의갯수

src 배열의 행 수와 열의 갯수글 rows 와 cols 변수에 저장

 

 

//원본배열과 동일하 크기의 사본배열을 생성

int [][] dest= new int[rows][cols];

src 와 동일한 크기의 사본 배열 dest 를 생성 하고 dest 배열의 행 수는 src 배열의 열수와 같고 열의 수는 src 배열의 행 수와 같다 이렇게 하는 이유는 src 배열을 오른쪽으로 90도 회전시키면 행과 열이 바뀌기 떄문이다

 

//원본배열->사본배열로 옮기기

for(int i=0; i<rows;i++) {//행점자

for(int k=0; k<cols; k++) {//열첨자

 

dest[i][k]= src[i][k];

}

}

먼저 for문에서 i 는 현재 처리 할 행의 인덱스를 나타냅니다 k는 현재 처리 할 열의 인덱스 

dest[i][cols -k -1] = src[i][k] 구문은 현재 src 배열의 i 번쨰 행 k 번쨰 열의 값을,새로운 dest 배열에서 몇번째 행과

열에 넣을지 계산 

오른쪽 90도 회전에서는 원래 배열의 마지막 열이 새로운 배열의 첮번째 항 두번째열이 두번째 형 이 된다 

따라서 cols-k-1을 통해현재 열의 위치를 역순으로 바꾸어 새로운 배열에서 해당위치에 값을 할당

return dest;

 

}


     

//좌우뒤집기

 

public static int[][] flip_left_right(int[][] src) {

flip_left_right 메소드는 2차원 정수형 배열 src를 좌우로 바꾸기 메소드이다

        int rows = src.length; // 행 수

        int cols = src[0].length; // 열의 갯수

src 배열의 행 수와 열의 갯수글 rows 와 cols 변수에 저장

        // 원본 배열과 동일 크기의 사본 배열을 생성

        int[][] dest = new int[rows][cols];

 

        // 원본 배열 -> 사본 배열로 옮기기

        for (int i = 0; i < rows; i++) { // 행 점자

        for (int k = 0; k < cols; k++) { // 열 점자

        

             dest[i][cols -k - 1] = src[i][k];

            }

        }

 

        return dest;

 

    }


//가로 세로 

//컬럼 로우

//180도 돌리기 

public static int[][] rotate_180(int[][] src) {

rotate_180 메소드는 2차원 정수형 배열 src를 180도 뒤집기 메소드이다

        int rows = src.length; // 행 수

        int cols = src[0].length; // 열의 갯수

src 배열의 행 수와 열의 갯수글 rows 와 cols 변수에 저장

        // 원본 배열과 동일 크기의 사본 배열을 생성

        int[][] dest = new int[rows][cols];

 

        // 원본 배열 -> 사본 배열로 옮기기

        for (int i = 0; i < rows; i++) { // 행 점자

        for (int k = 0; k < cols; k++) { // 열 점자

               

        dest[rows - i - 1][cols - k - 1] = src[i][k];

            }

        }

 

        return dest;

 

    }

}

반응형

'JAVA' 카테고리의 다른 글

JAVA STUDY 상속 추상화 인터페이스  (0) 2023.04.20
JAVA Study 달력 알고리즘 문제  (0) 2023.04.14
JAVA 2차원배열  (0) 2023.04.12
JAVAStuDY Stack Heap  (0) 2023.04.11
JAVA 배열  (0) 2023.04.11