본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 23. 2차원 배열 왼쪽으로 90도 회전하기

by 제이투더문 2024. 7. 4.

 

 안녕하세요, 작가 J입니다. 이번에는 2차원 배열을 왼쪽으로 90도 회전하여 출력하는 프로그램을 작성해 보겠습니다. 이 예제는 2차원 배열을 다루는 방법과 배열의 회전을 이해하는 데 도움이 됩니다.

 

[Java Festival 23] 2차원 배열 왼쪽으로 90도 회전하기

아래와 같은 2차원 배열을 왼쪽으로 90도 회전하여 출력하시오.

1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

 

 

 

 

코드 풀이

코드 풀이 1: 직접 회전하여 저장하는 방식

package Ex;

public class Ex23 {

    public static void main(String[] args) {
        int[][] array = new int[5][5];
        int num = 1;
        
        // 2차원 배열 초기화
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                array[i][j] = num++;
            }
        }
        
        // 배열을 왼쪽으로 90도 회전하여 새로운 배열에 저장
        int[][] rotatedArray = new int[5][5];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                rotatedArray[array.length - j - 1][i] = array[i][j];
            }
        }
        
        // 회전된 배열 출력
        for (int i = 0; i < rotatedArray.length; i++) {
            for (int j = 0; j < rotatedArray[i].length; j++) {
                System.out.print(rotatedArray[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

 

 

1. 2차원 배열 초기화

  • int[][] array = new int[5][5];: 5x5 크기의 2차원 배열을 선언합니다.
  • for (int i = 0; i < array.length; i++) { ... }: 배열을 순회하며 1부터 25까지의 숫자를 저장합니다.

2. 배열을 왼쪽으로 90도 회전하여 새로운 배열에 저장

  • int[][] rotatedArray = new int[5][5];: 회전된 배열을 저장할 새로운 5x5 배열을 선언합니다.
  • for (int i = 0; i < array.length; i++) { ... }: 배열을 순회하며 원래 배열의 값을 회전된 배열의 적절한 위치에 저장합니다.
  • rotatedArray[array.length - j - 1][i] = array[i][j];: 원래 배열의 값을 회전된 배열의 적절한 위치에 저장합니다.

3. 회전된 배열 출력

  • for (int i = 0; i < rotatedArray.length; i++) { ... }: 회전된 배열을 순회하며 값을 출력합니다.

 

코드 풀이 2: 원본 배열을 직접 회전하여 저장하는 방식

package Ex;

public class Ex23Alternative {

    public static void main(String[] args) {
        int[][] array = new int[5][5];
        int num = 1;
        
        // 2차원 배열 초기화
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                array[i][j] = num++;
            }
        }
        
        // 배열을 왼쪽으로 90도 회전하여 출력
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[j][array.length - 1 - i] + "\t");
            }
            System.out.println();
        }
    }
}

 

1. 배열을 왼쪽으로 90도 회전하여 출력

  • for (int i = 0; i < array.length; i++) { ... }: 배열을 순회하며 원래 배열의 값을 회전하여 출력합니다.
  • System.out.print(array[j][array.length - 1 - i] + "\t");: 원래 배열의 값을 회전된 위치에 맞게 출력합니다.
  • System.out.println();: 줄바꿈을 실행합니다.

 

마무리

 이번 예제에서는 2차원 배열을 왼쪽으로 90도 회전하여 출력하는 두 가지 방법을 다뤄보았습니다. 첫 번째 방법은 원본 배열을 회전된 배열로 변환하는 방법이며, 두 번째 방법은 원본 배열을 직접 회전하여 출력하는 방법입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!