본문 바로가기

SWEA/D2

[SWEA 1962][D2][JAVA] 숫자 배열 회전

[문제]

https://swexpertacademy.com/main/code/problem/problemSolver.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

 

[풀이방법]

 

90도 / 180도 / 270도를 회전

 

1,1 1,2 1,3
2.1 2.2 2.3
3.1 3.2 3.3

 

90도 회전 한 결과 

3.1 2.1 1.1
3.2 2.2 1.2
3.3 2.3 1.3

 

 

180도 회전한 결과 == 90도 회전한 결과+ 90도 회전 

3.3 3.2 3.1
2.3 2.2 2.1
1.3 1.2 1.1

 

270도 회전 == 180도 회전한 결과 + 90도 회전 

1.3 2.3 3.3
1.2 2.2 3.2
1.1 2.1 3.1

            /**

             * 90도 회전 -> 오른쪽으로 2칸씩 (만약 N이라면 칸을 바꿔야한다. )

             * 

             */

            int[][] map_90 = new int[N][N];

            int[][] map_180 = new int[N][N];

            int[][] map_270 = new int[N][N];

 

            rotate(1, map, map_90);

            rotate(1, map_90, map_180);

            rotate(1, map_180, map_270);

 

            for (int i = 0; i < N; i++) {

                for (int j = 0; j < N; j++) {

                    sf.append(map_90[i][j]);

 

                }

                sf.append(" ");

                for (int j = 0; j < N; j++) {

                    sf.append(map_180[i][j]);

                }

                sf.append(" ");

                for (int j = 0; j < N; j++) {

                    sf.append(map_270[i][j]);

                }

                sf.append("\n");

            }

 

        }

        System.out.println(sf.toString());

    }

    static void rotate(int dir, int[][] map, int[][] map_rotate) {

 

        for (int col = 0; col < N; col++) {

            for (int row = 0; row < N; row++) {

                map_rotate[col][row] = map[N-row-1][col]; 

            }

        }

 

    }