C#에서 '배열의 배열'은 가변 배열(Jagged Array)이라고 부릅니다. 일반적인 2차원 배열과 달리, 가변 배열은 각 행의 길이가 서로 다를 수 있어 더 유연한 데이터 구조를 제공합니다.
가변 배열 선언하기
가변 배열은 대괄호를 연달아 사용하여 선언합니다. 예를 들어 정수형 가변 배열은 다음과 같이 선언할 수 있습니다.
int[][] marks;
선언만으로는 메모리가 할당되지 않으므로, 실제로 사용하려면 초기화 과정이 필요합니다. 아래 예제에서는 5개의 정수 배열을 요소로 가지는 가변 배열을 초기화하고 있습니다.
int[][] marks = new int[][]{new int[]{ 90,95 },new int[]{ 89,94 }, new int[]{ 78,87 },new int[]{ 76, 68 }, new int[]{ 98, 91 } };전체 예제 코드
이제 C#에서 가변 배열을 실제로 구현하고 활용하는 방법을 전체 예제를 통해 살펴보겠습니다. 중첩 for문을 사용하여 배열의 모든 요소에 접근하고 출력합니다.
using System;
namespace MyApplication {
class MyDemoClass {
static void Main(string[] args) {
int i, j;
/* 5개의 정수 배열로 이루어진 가변 배열 */
int[][] marks = new int[][]{new int[]{90,95},new int[]{89,94}, new int[]{78,87},new int[]{ 76, 68 },
new int[]{ 98, 91}};
for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) {
Console.WriteLine("marks[{0}][{1}] = {2}", i, j, marks[i][j]);
}
}
Console.ReadKey();
}
}
}실행 결과
위 프로그램을 실행하면 각 배열 요소의 인덱스와 값이 순서대로 출력됩니다.
marks[0][0] = 90 marks[0][1] = 95 marks[1][0] = 89 marks[1][1] = 94 marks[2][0] = 78 marks[2][1] = 87 marks[3][0] = 76 marks[3][1] = 68 marks[4][0] = 98 marks[4][1] = 91
정리
C#의 가변 배열(Jagged Array)은 각 행마다 서로 다른 크기의 배열을 담을 수 있는 유연한 자료구조입니다. int[][]와 같은 형태로 선언하며, 배열명[행][열] 방식으로 요소에 접근합니다. 학생별 시험 점수처럼 행마다 데이터 개수가 다를 수 있는 경우에 특히 유용하게 활용됩니다.