엠마의 개발공부일지

배열 | 이차원배열 회전시키기 본문

코딩테스트준비

배열 | 이차원배열 회전시키기

Emmababy 2022. 12. 8. 00:17
728x90

▶주어진 2차원배열을 시계방향 90도로 회전시킨 결과를 출력하시오

 

 

 

▶Guide

- 그리려고하는 2차원배열의 형태를 머리속으로 그려놓고, 빈 2차원 배열을 만들어준다

- 기존배열을 읽어오는 2중 for문을 사용

- 한줄을 잡아서 어떤 인덱스로 변경되는지 파악해보고, 2중 for문안의 i, j 값을 활용하여 대입해주기

 

 

 

 

> 전체 배열길이 3과, 내부배열길이 5를 분리해서 생각하고

> 이중 for문을 그대로 만들어준다

 

 

> 이 안에서 쓰는 숫자는 i, j 뿐이다

> i, j 로 조합하여 만들어지는 숫자 (r) 하나만 계산하면 끝!

> 배열의 90도 회전으로인해 00자리에 있는숫자가, 02자리에 찍혀야 한다

> 여기까지는 i, j값만 잘 매칭하면 되서 수월하다

> 이과정에서 초보는 약간의 수고로움은 있을수밖에 없는것같다

 

 

 

> r 계산할때는 새로만들어질 배열을 머릿속으로 그려봐야 이해가잘된다

 

 

 

 

 

 

> 사용된 i, j, r을 새로운 이차원배열에 배치해서 대입해주면 끝!

> 확인을 위해 이차원배열로 출력해보기

    public static void main(String[] args) {

        int[][] arr = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};
        int[][] arr90 = new int[arr[0].length][arr.length];

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                int r = arr.length - 1 - i;
                arr90[j][r] = arr[i][j];
            }
        }

        for (int i = 0; i < arr90.length; i++) {
            for (int j = 0; j < arr90[i].length; j++) {
                System.out.print(arr90[i][j]);
            }
            System.out.println();
        }

    }
728x90
Comments