2차원 배열
2차원 배열을 연습하는 예제 코드입니다.
class Program {
static void Main(string[] args) {
int[,] _2dArray = { { 1, 2, 3 }, { 4, 5, 6 } };
for (int i = 0; i < _2dArray.GetLength(0); i++) {
for (int j = 0; j < _2dArray.GetLength(1); j++) {
Console.Write($"[{i},{j}] : {_2dArray[i,j]} ");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
foreach(int arr in _2dArray) {
Console.Write($"{arr} ");
}
만약 foreach 로 2차원 배열의 요소를 출력한다면 어떤 결과가 나올까요? 1차원 배열에서 2차원 배열 순으로 나열됩니다.
3차원 배열
class Program {
static void Main(string[] args) {
string[,,] array = new string[4, 3, 2];
for (int i = 0; i < array.GetLength(0); i++) {
for (int j = 0; j < array.GetLength(1); j++) {
Console.Write("{");
for (int k = 0; k < array.GetLength(2); k++) {
if (i % 2 == 0 || i == 0) {
array[i, j, 0] = "★";
array[i, j, 1] = "☆";
}
else {
array[i, j, 0] = "☆";
array[i, j, 1] = "★";
}
Console.Write($"{array[i, j, k]}");
}
Console.Write("}");
}
Console.WriteLine();
}
}
}
길이가 2인 배열을 3열 4행으로 나열했습니다.
가변 배열
앞서 살펴본 2차원 배열, 3차원 배열 모두 배열을 요소로 갖는 배열이지만 이에 더 적합한 배열은 '가변 배열' 입니다. 참고할 점은 가변 배열이라는 이름을 보면 크기를 늘렸다 줄였다 할 수 있을것 처럼 보이지만 그렇진 않습니다. 가변 배열을 영어로 설명하면 JaggedArray 입니다. 이는 들쭉 날쭉한 배열이라는 의미를 가집니다. 이를 참고하여 개념을 이해하시길 바랍니다.
class Program {
static void Main(string[] args) {
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2, 3, 4, 5 };
jaggedArray[1] = new int[] { 6, 7, 8, 9 };
jaggedArray[2] = new int[] { 10, 11 };
int i = 0;
foreach (int[] jagged in jaggedArray) {
Console.Write($"Array[{i++}]Length : {jagged.Length}개 : ");
foreach (int a in jagged) {
Console.Write(a + " ");
}
Console.WriteLine();
}
}
}
가변 배열에 각각의 배열 요소가 들어가 있음을 확인할 수 있습니다.