C# 가변 배열(Jagged Array): 선언, 초기화, 접근 완전 가이드
C# 가변 배열 (Jagged Array)
이 튜토리얼에서는 C# 가변 배열을 배웁니다. 예제와 함께 선언, 초기화, 접근 방법을 다룹니다.
C#에서 가변 배열은 여러 배열을 요소로 가집니다. 하지만 다차원 배열과 달리, 가변 배열 안의 각 배열은 서로 다른 크기를 가질 수 있습니다.
가변 배열 학습 전 다음 선행 지식 필요:
C# 가변 배열 선언
가변 배열 선언 문법:
dataType[ ][ ] nameOfArray = new dataType[rows][ ];
예시:
// 가변 배열 선언
int[ ][ ] jaggedArray = new int[2][ ];
여기서:
int - 배열 데이터 타입
[][] - 가변 배열 표시
jaggedArray - 가변 배열 이름
[2][] - 가변 배열 안의 요소(배열) 개수
가변 배열의 각 요소도 배열이므로 개별 배열 크기 설정 가능. 예:
// 첫 번째 배열 크기 3
jaggedArray[0] = new int[3];
// 두 번째 배열 크기 2
jaggedArray[1] = new int[2];
가변 배열 초기화
가변 배열 초기화 여러 방법:
1. 인덱스로 초기화
선언 후 인덱스로 초기화:
// 첫 번째 배열 초기화
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// 두 번째 배열 초기화
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 4;
여기서:
- 첫 번째 대괄호 인덱스: 가변 배열 요소의 인덱스
- 두 번째 대괄호 인덱스: 각 요소 안의 요소 인덱스
2. 크기 지정 없이 초기화
// 문자열 가변 배열 선언
int[ ][ ] jaggedArray = new int[2] [ ];
// 각 배열 초기화
jaggedArray[0] = new int[] {1, 3, 5};
jaggedArray[1] = new int[] {2, 4};
3. 선언과 동시에 초기화
int[ ][ ] jaggedArray = { new int[ ] {10, 20, 30}, new int[ ] {11, 22}, new int[ ] {88, 99} };
가변 배열 요소 접근
인덱스로 요소 접근:
// 두 번째 배열 첫 요소
jaggedArray[1][0];
// 두 번째 배열 두 번째 요소
jaggedArray[1][1];
// 첫 번째 배열 두 번째 요소
jaggedArray[0][1];
예제: C# 가변 배열
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// 가변 배열 생성
int[ ][ ] jaggedArray = { new int[] {1, 3, 5}, new int[] {2, 4}, };
// 가변 배열 요소 출력
Console.WriteLine("jaggedArray[1][0]: " + jaggedArray[1][0]);
Console.WriteLine("jaggedArray[1][1]: " + jaggedArray[1][1]);
Console.WriteLine("jaggedArray[0][2]: " + jaggedArray[0][2]);
Console.ReadLine();
}
}
}
출력
jaggedArray[1][0]: 2
jaggedArray[1][1]: 4
jaggedArray[0][2]: 5
가변 배열 안에서:
jaggedArray[1][0] - 두 번째 배열 첫 요소
jaggedArray[1][1] - 두 번째 배열 두 번째 요소
jaggedArray[0][2] - 첫 번째 배열 세 번째 요소
가변 배열 순회
C#에서 루프로 가변 배열 각 요소 순회 가능:
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// 가변 배열 선언
int[][] jaggedArray = new int[2][];
// 가변 배열 요소 크기 설정
jaggedArray[0] = new int[3];
jaggedArray[1] = new int[2];
// 첫 번째 배열 초기화
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// 두 번째 배열 초기화
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 2;
// 외부 for 루프
for (int i = 0; i < jaggedArray.Length; i++) {
Console.Write("Element " + i + ": ");
// 내부 for 루프
for (int j = 0; j < jaggedArray[i].Length; j++) {
Console.Write(jaggedArray[i][j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
출력
Element 0: 1 3 5
Element 1: 2 2
중첩 for 루프로 가변 배열 순회. 여기서:
1. 외부 for 루프
- 가변 배열의 요소(배열들) 접근
jaggedArray.Length - 가변 배열 크기
2. 내부 for 루프
- 가변 배열 안 개별 배열의 요소들 접근
jaggedArray[i].Length - 가변 배열 안 i번째 배열의 크기
가변 배열에 다차원 배열 포함
C#에서 다차원 배열을 가변 배열 요소로 사용 가능:
int[ ][ , ] jaggedArrayTwoD = new int[2][ , ] { new int[,] { {1, 8}, {6, 7} }, new int[,] { {0, 3}, {5, 6}, {9, 10} } };
가변 배열 각 요소가 다차원 배열:
new int[,] { {1, 8}, {6, 7} } - 2개 요소 가진 2D 배열
new int[ , ] { {0, 3}, {5, 6}, {9, 10} } - 3개 요소 가진 2D 배열
예제:
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// 2D 배열로 가변 배열 선언 및 초기화
int[][,] jaggedArray = new int[3][ , ] {
new int[ , ] { {1, 8}, {6, 7} },
new int[ , ] { {0, 3}, {5, 6}, {9, 10} },
new int[ , ] { {11, 23}, {100, 88}, {0, 10} }
};
Console.WriteLine(jaggedArray[0][0, 1]);
Console.WriteLine(jaggedArray[1][2, 1]);
Console.WriteLine(jaggedArray[2][1, 0]);
Console.ReadLine();
}
}
}
출력
8
10
100
코드 jaggedArray[0][0, 1]에서:
[0] - 가변 배열의 첫 번째 요소(2D 배열)
[0, 1] - 2D 배열 안 첫 번째 배열의 두 번째 요소