가변 배열이란?
가변 배열(Jagged Array)은 말 그대로 '배열의 배열'입니다. 일반적인 2차원 배열과 달리 각 내부 배열의 길이가 서로 달라도 되기 때문에 유연하게 데이터를 구성할 수 있습니다. 가변 배열의 요소에 접근하려면 해당 내부 배열의 인덱스와, 그 안에서 원하는 요소의 인덱스를 차례로 지정하면 됩니다.
다음은 정수형 배열 5개로 구성된 가변 배열의 예입니다.
int[][] a = new int[][]{new int[]{0,0},new int[]{1,2}, new int[]{2,4},new int[]{ 3, 6 }, new int[]{ 4, 8 } };만약 세 번째 배열의 두 번째 요소에 접근해야 한다면 아래와 같이 작성합니다.
a[2][1]
위 코드는 가변 배열에서 세 번째 배열(인덱스 2)의 첫 번째 위치 뒤에 있는 요소, 즉 두 번째 요소(인덱스 1)에 접근하는 예입니다. C#의 배열 인덱스는 0부터 시작하기 때문에 '세 번째 배열'의 인덱스는 2가 된다는 점에 유의하세요.
전체 예제 코드
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
// 정수형 배열 5개로 이루어진 가변 배열 선언 및 초기화
int[][] a = new int[][]{new int[]{0,0},new int[]{1,2}, new int[]{2,4},new int[]{ 3, 6 }, new int[]{ 4, 8 } };
int i, j;
// 중첩 반복문으로 모든 요소 출력
for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) {
Console.WriteLine("a[{0}][{1}] = {2}", i, j, a[i][j]);
}
}
// 가변 배열의 특정 요소에 직접 접근
Console.WriteLine(a[2][1]);
Console.ReadKey();
}
}
}실행 결과
a[0][0] = 0 a[0][1] = 0 a[1][0] = 1 a[1][1] = 2 a[2][0] = 2 a[2][1] = 4 a[3][0] = 3 a[3][1] = 6 a[4][0] = 4 a[4][1] = 8 4
마지막 줄의 4가 바로 a[2][1], 즉 세 번째 배열의 두 번째 요소 값입니다. 이처럼 대괄호를 연달아 사용하는 이중 인덱스 표기법만 기억하면 가변 배열의 어떤 요소든 손쉽게 읽고 수정할 수 있습니다.