Multi-dimensional Array (다차원 배열)

다차원배열 (Multi-dimensional array)

배열을 구성요소로 하는 것이 2차원 배열이며, 2차원 배열을 구성 요소로 하는 것이 3차원 배열이다. 이러한 배열을 보통의 배열인 1차원 배열 과 구별하기 위해 다차원배열 이라고 한다. 다차원배열 중 가장 간단한 다차원 배열은 2차원 배열이다.

  • 2차원 배열의 선언 및 생성
int[][] a = new int[3][4];

image-20190124201535220

  • 3행 4열의 배열 a : 가로와 세로로 ““과 ““이 늘어선 의 이미지
  • 2차원 배열의 각 요소는 a[2][2] 와 같이 접근

2차원배열 예제

public class Main{
    private static void printArray(int[][] a) {
        for (int i=0;i<a.length;i++) {
            System.out.println(a[i]);
        }
        
        for (int i=0;i<a.length;i++) {
            for(int j=0;a[i] != null && j < a[i].length;j++) {
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        System.out.println("Example 1 : ");
        int[][] a = new int[2][3];
        printArray(a);
        
        System.out.println("Exmaple 2 : ");
        int[][] b = new int[2][];
        printArray(b);
        
        System.out.println("Example 3 : ");
        b[0] = new int[3];
        b[1] = new int[5];
        printArray(b);
    }
}

Java의 2차원 배열

엄밀히 말하자면, Java는 다차원 배열이 없다. 왜냐하면 자바에서는 2차원 배열을 “배열의 배열” 로 생각하고, 3차원 배열을 “배열의 배열의 배열” 로 생각하기 때문이다. 따라서, 2차원배열 A의 형태는 다음과 같다고 할 수 있다.

“각 요소가 N개의 정수 배열인” M개의 요소를 갖는 1차원 배열

  • Java에서, 2차원 배열 A의 구조

image-20190124210351693

C++의 2차원 배열

C++에서는 2차원 배열을 1차원 배열과 같은 형태로 저장한다. (linear)

  • C++에서, M * N 배열 A의 구조

image-20190124212220090

C++에서는 위와 같이 M * N 개의 요소가 저장된 1차원 배열의 형태로 2차원 배열이 저장되기 때문에, A[i][j]A[i*N+j] 와 같은 의미로 해석된다.

Dynamic 2D Array

1차원 동적 배열과 유사하게, 2차원 동적 배열도 정의할 수 있다. a nested dynamic array 의 형태로 말이다!