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

데이터 구조의 불규칙 배열(Irregular Array) 완벽 이해

이번 글에서는 데이터 구조에서 자주 다루어지는 불규칙 배열(Irregular Array)에 대해 살펴보겠습니다. 불규칙 배열을 제대로 이해하려면 먼저 그 반대 개념인 정규 배열(Regular Array)부터 짚고 넘어가는 것이 좋습니다.

정규 배열(Regular Array)이란?

정규 배열은 각 행(row)이 동일한 개수의 열(column)을 가지는 배열을 의미합니다. 다시 말해, 모든 행이 똑같은 수의 요소를 담고 있는 2차원 배열이라고 할 수 있습니다. 예를 들어 3행 4열 배열은 첫 번째 행, 두 번째 행, 세 번째 행 모두 정확히 4개의 요소를 가지므로 전형적인 정규 배열입니다.

데이터 구조의 불규칙 배열(Irregular Array) 완벽 이해

불규칙 배열(Irregular Array)이란?

정규 배열의 정의를 알면 불규칙 배열도 쉽게 유추할 수 있습니다. 불규칙 배열(흔히 재그드 배열(Jagged Array)이라고도 부릅니다)은 각 행이 서로 다른 개수의 요소를 가질 수 있는 배열입니다. 즉, 어떤 행은 3개의 요소를, 다른 행은 5개의 요소를 가질 수 있으며, 행마다 길이가 일정하지 않아도 됩니다.

이러한 불규칙 배열은 '배열의 배열(Array of Arrays)' 방식으로 표현할 수 있습니다. 각 행을 하나의 독립된 1차원 배열로 만들고, 이 배열들을 참조하는 상위 배열로 묶는 구조입니다. 아래 그림과 같이 나타낼 수 있습니다.

데이터 구조의 불규칙 배열(Irregular Array) 완벽 이해

간단한 예시

C#이나 Java처럼 재그드 배열을 기본적으로 지원하는 언어에서는 다음과 같이 선언할 수 있습니다.

int[][] arr = new int[3][];
arr[0] = new int[4];
arr[1] = new int[2];
arr[2] = new int[5];

위 코드에서 첫 번째 행은 4개, 두 번째 행은 2개, 세 번째 행은 5개의 요소를 가지므로 전형적인 불규칙 배열입니다.

불규칙 배열의 장점

메모리 효율성: 실제 필요한 만큼만 공간을 할당하므로, 빈 공간을 위해 메모리를 낭비하지 않습니다.
유연한 표현력: 삼각형 행렬이나 행 길이가 제각각인 데이터(예: 문서 내 단어 목록)를 자연스럽게 표현할 수 있습니다.
독립적인 행 관리: 각 행이 별개의 배열이므로 특정 행만 교체하거나 크기를 조정하기가 쉽습니다.

정리하자면, 정규 배열은 모든 행의 길이가 동일한 반면, 불규칙 배열은 행마다 길이가 달라도 되는 더 유연한 구조입니다. 데이터의 형태가 균일하지 않다면 불규칙 배열이 메모리와 코드 측면에서 더 효율적인 선택이 될 수 있습니다.