C#에서 배열을 다룰 때 다차원 배열(Multi-dimensional Array)과 지그재그 배열(Jagged Array)은 자주 혼동되는 개념입니다. 두 배열 모두 여러 개의 값을 계층적으로 저장할 수 있지만, 구조와 사용 방법에서 뚜렷한 차이가 있습니다.
다차원 배열(Multi-dimensional Array)이란?
다차원 배열은 직사각형 배열(Rectangular Array)이라고도 불립니다. 각 차원의 길이가 고정되어 있어 마치 표(테이블)처럼 균일한 형태를 가지는 것이 특징입니다.
예를 들어, 정수형 3차원 배열을 선언하는 방법은 다음과 같습니다.
int[ , ] val;
2차원 배열을 선언하고 초기화하는 방법은 아래와 같습니다.
int[] val = new int[3,3];
위 코드에서 val은 3행 3열로 구성된 균일한 구조의 2차원 배열입니다. 모든 행의 열 개수가 동일하기 때문에 직사각형 배열이라고 부르는 것입니다.
지그재그 배열(Jagged Array)이란?
지그재그 배열은 '배열의 배열', 즉 각 요소가 또 다른 배열인 구조를 가집니다. 다차원 배열과 달리 내부 배열마다 길이가 서로 달라도 되기 때문에 유연하게 데이터를 구성할 수 있습니다.
지그재그 배열의 요소에 접근하려면 해당 배열의 인덱스를 순서대로 지정하면 됩니다.
아래는 정수 배열 5개를 포함하는 지그재그 배열의 예시입니다.
int[][] a = new int[][]{
new int[]{0,0},
new int[]{1,2},
new int[]{2,4},
new int[]{3,6}
};
위 예제에서 첫 번째 내부 배열은 2개의 요소를, 두 번째 이후의 배열들 역시 각각 독립적인 길이를 가질 수 있습니다. 예를 들어 a[1][1]과 같이 두 단계의 인덱스를 사용해 특정 요소에 접근합니다.
핵심 차이점 비교
- 구조: 다차원 배열은 모든 행의 크기가 동일한 직사각형 구조이며, 지그재그 배열은 각 행(내부 배열)의 크기가 서로 다를 수 있습니다.
- 선언 방식: 다차원 배열은 쉼표로 차원을 구분하여 선언하고(
int[]), 지그재그 배열은 대괄호를 중첩하여 선언합니다(int[][]). - 메모리 활용: 지그재그 배열은 필요한 만큼만 공간을 할당할 수 있어 불균일한 데이터를 다룰 때 메모리를 더 효율적으로 사용할 수 있습니다.
- 적합한 용도: 크기가 일정한 표 형태의 데이터에는 다차원 배열이, 행마다 크기가 다른 데이터(예: 삼각형 형태의 데이터)에는 지그재그 배열이 적합합니다.