2차원 이상의 배열을 다차원 배열이라고 합니다. C#에는 다차원 배열을 표현하는 방법이 두 가지가 있습니다. 이번 포스팅에서는 다 차원 배열의 두 가지 구현 방법에 대해서 정리했습니다.
다차원 배열의 두가지 구현 방법
다차원 배열을 구현할 때 아래와 같이 두 가지 방법을 사용합니다. 대괄호 [] 안에 콤마(,) 사용하거나 대괄호만으로 원하는 차수를 표현 후 구현합니다.
//첫번째 방법 - 고정 배열
자료형[,] 배열명 = new 자료형[y,x]; //2차원 배열
자료형[,,] 배열명 = new 자료형[z,y,x]; //3차원 배열
//두번째 방법 - 가변 배열
자료형[][] 배열명 = new 자료형[y][x]; //2차원 배열
자료형[][][] 배열명 = new 자료형[z][y][x]; //3차원 배열
첫 번째 구현 방법 - 고정 배열
아래와 같이 첫 번째 방법으로 배열 구현 시 배열의 크기는 고정되며, 크기를 벗어나는 요소가 할당되었을 때, 컴파일 에러가 발생합니다.
int[,] array_A = new int[2, 3] { { 1, 2 }, { 4, 5, 6 } }; //{{1,2,3}, {4,5,6}}처럼 입력해야한다.
다음은 정상적인 방법으로 고정 배열을 생성하는 예제입니다.
using System;
using System.Data;
namespace MultiArray_exam
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("2차원 고정 배열 : array_A[2,3]");
int[,] array_A = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
for (int j = 0; j < 2; j++)
{
for(int i = 0; i < 3; i++)
{
Console.Write("{0,5}", array_A[j, i]);
}
Console.WriteLine();
}
}
}
}
결과
2차원 고정 배열 : array_A[2,3]
1 2 3
4 5 6
두 번째 구현 방법 - 가변 배열
두 번째 방법으로 구현 시 배열의 크기를 가변 시킬 수 있습니다. 예를 들어 2차원 배열의 경우 맨 처음 대괄호 [] 안에는 차수의 크기를 기입하고, 마지막 대괄호 [] 에는 기입하면 안됩니다. 3차원의 경우 맨 처음 대괄호 []만 기입하고 나머지는 기입하지 않습니다. 예를 들면 다음과 같습니다.
int[][] array_A = new int[2][]; //2차원 배열
int[][][] array_B = new int[2][][]; //3차원 배열
다음은 3차원 가변 배열의 구현 예제입니다. 3차원 배열의 경우 3차원의 배열을 생성 후 2차원 배열을 생성합니다. 그리고 나서 마지막으로 1차원 배열을 생성하는 순서로 구현해야 합니다. 이 방법은 2차원 배열도 마찬가지입니다.(2차원 배열 생성 --> 1차원 배열 생성)
using System;
using System.Data;
namespace MultiArray_exam
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("가변 배열 : array_B[2][3][]");
int[][][] array_B = new int[2][][];
array_B[0] = new int[3][];
array_B[1] = new int[3][];
array_B[0][0] = new int[] { 1, 2, 3, 4, 5 };
array_B[0][1] = new int[] { 6, 7, 9 };
array_B[0][2] = new int[] { 9 };
array_B[1][0] = new int[] { 10, 11 };
array_B[1][1] = new int[] { 12, 13, 14, 15 };
array_B[1][2] = new int[] { 16, 17};
for (int k = 0; k < 2; k++)
{
for (int j = 0; j < 3; j++)
{
Console.Write("array_B[{0}][{1}] : ", k, j);
for (int i = 0; i < array_B[k][j].Length; i++)
{
Console.Write("{0} ", array_B[k][j][i]);
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}
}
결과
가변 배열 : array_B[2][3][]
array_B[0][0] : 1 2 3 4 5
array_B[0][1] : 6 7 9
array_B[0][2] : 9
array_B[1][0] : 10 11
array_B[1][1] : 12 13 14 15
array_B[1][2] : 16 17
[Review]
"초보자를 위한 C# 200제(2판)" / 저자 : 강병익
'Program Language > C#' 카테고리의 다른 글
Part2. C# 기초 다지기(5. Random 클래스) (11) | 2023.02.14 |
---|---|
Part2. C# 기초 다지기(4. 배열의 정렬) (14) | 2023.02.12 |
Part2. C# 기초 다지기(2. Array 클래스) (20) | 2023.02.06 |
Part2. C# 기초 다지기(1. 배열) (16) | 2023.02.03 |
Part1. C# 첫발 내딛기(32. 조건문) (10) | 2023.02.03 |
댓글