Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 들쭉날쭉한 배열(Jagged Array) 선언, 초기화, 접근 방법 완벽 정리

들쭉날쭉한 배열(Jagged Array)은 '배열의 배열'을 의미합니다. 일반적인 2차원 배열과 달리 각 행(내부 배열)의 길이가 서로 다를 수 있어, 크기가 불규칙한 데이터를 다룰 때 유용하게 활용됩니다.

들쭉날쭉한 배열 선언하기

int 타입의 들쭉날쭉한 배열 scores(예시에서는 points)를 선언하는 방법은 다음과 같습니다.

int[][] points;

대괄호 []를 두 번 연속으로 사용하여 '배열의 배열'임을 나타냅니다. 이 시점에는 아직 메모리가 할당되지 않은 상태입니다.

들쭉날쭉한 배열 초기화하기

선언된 배열을 초기화하려면 각 내부 배열에 실제 값을 할당해야 합니다.

int[][] points = new int[][]{
    new int[]{10, 5},
    new int[]{30, 40},
    new int[]{70, 80},
    new int[]{60, 70}
};

위 코드에서는 총 4개의 내부 배열이 생성되며, 각각 2개의 정수 요소를 가집니다. 필요하다면 각 내부 배열의 길이를 서로 다르게 지정할 수도 있습니다.

들쭉날쭉한 배열 요소에 접근하기

배열의 특정 요소에 접근하려면 두 개의 인덱스를 연달아 사용합니다.

points[i][j]

여기서 i는 몇 번째 내부 배열인지를, j는 그 배열 안에서 몇 번째 요소인지를 나타냅니다.

전체 예제 코드

아래는 C#에서 들쭉날쭉한 배열을 선언하고, 초기화한 뒤 반복문으로 모든 요소를 출력하는 완전한 예제입니다.

using System;
namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[][] points = new int[][]{
                new int[]{10, 5},
                new int[]{30, 40},
                new int[]{70, 80},
                new int[]{60, 70}
            };
            int i, j;
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 2; j++) {
                    Console.WriteLine("a[{0}][{1}] = {2}", i, j, points[i][j]);
                }
            }
            Console.ReadKey();
        }
    }
}

실행 결과

a[0][0] = 10
a[0][1] = 5
a[1][0] = 30
a[1][1] = 40
a[2][0] = 70
a[2][1] = 80

정리

들쭉날쭉한 배열은 각 행의 길이를 자유롭게 설정할 수 있어 메모리를 효율적으로 사용할 수 있다는 장점이 있습니다. 반면, 모든 행의 길이가 동일한 직사각형 배열(rectangular array)과는 구조가 다르므로, 데이터의 형태에 맞게 적절히 선택하여 사용하는 것이 좋습니다.