가변 배열(Jagged Array)은 '배열의 배열'을 의미합니다. 일반적인 2차원 배열과 달리 각 행의 길이가 서로 다를 수 있어 유연한 데이터 구조를 만들 때 유용하게 사용됩니다.
가변 배열 선언하기
int 타입의 요소를 담는 scores라는 이름의 가변 배열은 다음과 같이 선언할 수 있습니다.
int[][] points;
가변 배열 초기화하기
선언 후에는 각 내부 배열의 크기를 자유롭게 지정하여 초기화할 수 있습니다.
int[][] points = new int[][]{new int[]{10,5}, new int[]{30,40}, new int[]{70,80}, new int[]{60,70}};가변 배열 요소에 접근하기
가변 배열의 특정 요소에 접근하려면 대괄호([])를 두 번 연속으로 사용합니다. 첫 번째 대괄호는 외부 배열의 인덱스를, 두 번째 대괄호는 내부 배열의 인덱스를 나타냅니다.
int x = points[0][1];
위 코드는 첫 번째 내부 배열의 두 번째 요소인 5를 변수 x에 저장합니다.
전체 예제 코드
다음은 C#에서 가변 배열을 선언하고, 반복문으로 순회하며, 특정 요소에 접근하는 과정을 보여주는 완전한 예제입니다.
using System;
namespace ArrayApplication {
class MyArray {
static void Main(string[] args) {
int[][] points = new int[][]{
new int[]{10,5},
new int[]{30,40},
new int[]{70,80},
new int[]{60,70}
};
int i, j;
// 반복문을 사용한 배열 순회
for (i = 0; i < 3; i++) {
for (j = 0; j < 2; j++) {
Console.WriteLine("a[{0}][{1}] = {2}", i, j, points[i][j]);
}
}
// 특정 요소 접근
int x = points[0][1];
Console.WriteLine(x);
Console.ReadKey();
}
}
}실행 결과
a[0][0] = 10 a[0][1] = 5 a[1][0] = 30 a[1][1] = 40 a[2][0] = 70 a[2][1] = 80 5
정리
C#의 가변 배열은 points[i][j] 형태로 이중 인덱스를 사용해 요소에 접근합니다. 각 행의 크기가 달라도 되므로 메모리를 효율적으로 사용할 수 있으며, 중첩 반복문(for 또는 foreach)을 활용하면 전체 요소를 손쉽게 순회할 수 있습니다.