본문 바로가기
Program Language/C#

Part2. C# 기초 다지기(3. 다차원 배열)

by 토담이아빠 2023. 2. 8.

다차원 배열

 

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판)" / 저자 : 강병익

댓글