본문 바로가기

Java프로그래밍

Ragged 배열(Array)

반응형



Ragged 배열(Array)


Ragged의 의미

'너덜너덜해진', 

'옷이 누더기가 된',

'해진' 이라는 뜻을 갖는다.



그래서, ragged flag라고 하는 것은

위의 그림처럼 끝이 다 해진 깃발을 말한다.


Ragged 배열(array)의 의미

2차원 배열을 생각해 보면,

각 행마다 열의 개수가 모두 똑같다.

Ragged array는 각 행마다 열의 개수가 다른 배열을 의미한다.


아래 그림을 보자.

왼쪽에는 일반 2차원배열이 있다.

3개의 행으로 이루어져 있고, 각 행마다 모두 3개씩의 열을 갖는다.

반면에,

오른쪽을 보면 2차원 배열이긴 한데, 모양새가 예사롭지 않다.

우선 3개의 행이 있으되,

0번 행은 2개의 열,

1번 행은 3개의 열,

2번 행은 4개의 열을 갖는다.

이런 것을 ragged array라고 한다.



Ragged 배열의 생성


Ragged 배열은 각 행마다 열의 개수가 다르기 때문에,

일반적인 이차원 배열처럼 만들 수는 없다.

대신, 각 행마다 필요한 열의 개수만큼 만들어 넣어야 한다.

예를 들어, 위의 그림에 나온 ragged 배열을 만드는 프로그램은 아래와 같다.



line 8

행의 개수만 3으로 정해졌기 때문에, 열의 개수는 공백으로 둔 채 2차원 배열을 만든다.

line 10

0번 행에는 2개의 공간을 만들기 위해 크기 2인 일차원 배열을 만들어 넣는다.

line 11, 12

1번 행과 2번 행에 각각 크기 3과 4인 일차원 배열을 만들어 넣는다.

line 14-16

만들어지 공간에 값을 넣어본다.


3차원 Ragged 배열


3차원 ragged의 경우에는 머리 속에 금방 떠올리기가 쉽진않다.

우선 아래 프로그램은 ragged 배열을 만드는 예를 보여준다.

line 8

전체 3개의 그룹이 있고, 그룹 안을 어떻게 나누어 쓸 것인가는 그룹별로 결정할 것이므로 나머지는 공백으로 둔다.

line 10-12

그룹안에 서브그룹을 만드는 것이다. 이것은 2차원 배열로 한다. 0번 그룹은 2개의 서브그룹을 만들고, 각 서브그룹마다 공간의 개수가 다르므로 공백으로 둔다.

line 14-22

가장 안쪽에 실제 데이터를 저장하는 공간을 만드는 것이다.


위의 코드 수행에 따른 ragged배열 생성을

그림으로 그려보면 다음과 같다.

실제 데이터가 저장되는 공간은 굵은 점으로 표시하였다. 


반응형