Coding/JAVA

[JAVA] 배열 리팩토링 - 2차원 배열

민톨이 2024. 6. 23. 01:42
728x90

2차원 배열

2차원 배열은 배열의 배열, 즉 행(row)과 열(column)로 이루어진 배열이다.

2차원 배열은 주로 행렬(matrix)이나 테이블(table) 형식의 데이터를 다룰 때 사용된다.

각 요소는 두 개의 인덱스를 통해 접근할 수 있으며, 첫 번째 인덱스는 행을, 두 번째 인덱스는 열을 가리킴

 

int[][] arr;

 

2차원 배열은 대괄호[] 2개를 사용하여 선언한다.

첫번째 대괄호 == 행

두번째 대괄호 == 열

고로 첫번째로 행을 찾고 두번째론 열을 찾는 방식이다.

 

💻 2차원 배열 예제

package array;

public class ArrayDi0 {

    public static void main(String[] args) {
        // 2x3 2차원 배열을 만들기
        int[][] arr = new int[2][3]; // 2행 3열

        arr[0][0] = 1; // 0행 0열
        arr[0][1] = 2; // 0행 1열
        arr[0][2] = 3; // 0행 2열
        arr[1][0] = 4; // 1행 0열
        arr[1][1] = 5; // 1행 1열
        arr[1][2] = 6; // 1행 2열

        //0행 출력
        System.out.print(arr[0][0] + " ");
        System.out.print(arr[0][1] + " ");
        System.out.print(arr[0][2] + " ");
        System.out.println(); // 한 행이 끝나면 라인을 변경

        //1행 출력
        System.out.print(arr[1][0] + " ");
        System.out.print(arr[1][1] + " ");
        System.out.print(arr[1][2] + " ");

    }
}

결과

 

💻 배열 리팩토링

 

위 코드를 보면 행이 반복된다. 이 코드를 개선해보자

 

package array;

public class ArrayDi1 {

    public static void main(String[] args) {
        // 2x3 2차원 배열을 만들기
        int[][] arr = new int[2][3]; // 2행 3열

        arr[0][0] = 1; // 0행 0열
        arr[0][1] = 2; // 0행 1열
        arr[0][2] = 3; // 0행 2열
        arr[1][0] = 4; // 1행 0열
        arr[1][1] = 5; // 1행 1열
        arr[1][2] = 6; // 1행 2열

        for(int row = 0; row < 2; row++){
            System.out.print(arr[row][0] + " ");
            System.out.print(arr[row][1] + " ");
            System.out.print(arr[row][2] + " ");
            System.out.println(); // 라인 변경
        }
    }
}

 

for문을 통해 행을 반복해서 접근했다. 코드가 1/2로 줄었다... 

근데 여기서 3열 선언한 부분도 더 줄일 수 있다. 어차피 [row][n]의 n 숫자만 0 -> 1 -> 2로 바뀌고 있으니 이것도 바꿔보자

 

 for(int row = 0; row < 2; row++){
            for(int column = 0; column < 3; column++ ){
                System.out.print(arr[row][column] + " ");
            }
            System.out.println(); // 라인 변경
        }

 

이중포문을 사용했다.

column변수도 생성하여 열을 ++해주는 식으로 코드를 한줄로 줄였다.

 

첫번째 for문은 행을 탐색하고 두번째 for문은 열을 탐색한다.

 

이 코드에서 row < 2 부분은 배열.length를 사용할 수도 있다.

for(int row = 0; row < arr.length; row++){
        ~~~~
}

 

또한 columnq부분도 .length를 사용할 수 있다.

 for(int column = 0; column < arr[row].length; column++ ){

 

 

여기서 더 줄일 수 있는 부분이 있다.

배열을 초기화하는 코드이다.

int[][] arr = new int[][]{
    {1,2,3}, // 0행 
    {4,5,6}  // 1행
}; // 2행 3열 

 

이렇게 아예 값을 선언하고 시작하는 방식을 사용하면 코드를 더 간결하게 만들 수 있다.

첫번째 {}는 0행이고 두번째 {}는 1행이다. 

값이 3개 들어갔으니(인덱스로는 0,1,2) 3열임도 알 수 있다.

 

 

 

'Coding > JAVA' 카테고리의 다른 글

[JAVA] 배열의 역순 출력  (0) 2024.08.02
[JAVA] 향상된 for문(for-each문)  (0) 2024.06.23
[JAVA]배열 리팩토링 - 1차원 배열 생성 및 초기화  (0) 2024.06.23
[JAVA]배열 특징/예제  (0) 2024.06.22
[JAVA]임시 변수 temp  (0) 2024.06.06