리안이와 함께하는 세상

[자료구조] 배열의 열 우선, 행 우선 본문

9급 공무원/컴퓨터 일반

[자료구조] 배열의 열 우선, 행 우선

리안아범 2017. 3. 5. 20:13

* 행 우선 배열

A[6]이라는 배열이 있을 때

A[6]A[0]A[1]A[2]A[3]A[4]A[5]
 123456


※보통※ 이런 모양을 생각한다. 이 경우 이차원 배열을 생성하면 이 늘어난다.


* Ex) A[5][6] 이라는 배열이 있다고 가정

A[5][6]A[n][0]A[n][1]A[n][2]A[n][3]A[n][4]A[n][5]
A[0][m]123456


A[1][m]789101112


A[2][m]131415161718

...


기본적으로 생각하는 이런 방식은 행 우선 방식이다.

즉, 행(두 번째 첨자)을 먼저 채우고, 열(첫 번째 첨자)로 넘어가는 방법이다.

따라서 A[2][3] 의 위치를 알려면, 행을 지정된 열의 수 만큼 채우고, 지정된 행의 위치를 찾아가면 된다.


즉, 행의 길이 = 6 이므로,

지정된 열 (2 +1 -1) X 행의 길이(6) + 지정된 행(3 + 1)

※ 배열은 0부터 시작한다. 참조문자가 2를 지정하고 있다면 실제 위치는 3이 된다.

   지정된 열 은 사실은 2 + 1 - 1 이다. 참조문자 2 에 실제 위치 + 1, 마지막 열은 빼야하므로 -1

    > 그래서 열은 지정된 대로 그냥 쓰면 된다.


따라서 위치는 16이 된다.


* 열 우선 배열

이 경우, A[5]라는 배열이 있을 때


A[5] 
A[0]1
A[1]2
A[2]3
A[3]4
A[4]5


이런 모양으로 생성된다. 따라서 이차원 배열을 생성하면 이 늘어난다

(사실 칸이든 줄이든 의미는 없다)


* Ex) A[5][6] 이라는 배열이 있다고 가정


A[5][6]A[n][0]
A[0][m]1
A[1][m]2
A[2][m]3
A[3][m]4
A[4][m]5

 

A[n][1]

6

7
8
9
10
 
A[n][2]
11
12
13
14
15

A[n][3]
16
17
18
19
20

...


이런 모양이 된다.


즉, 열을 먼저 채우고, 행으로 넘어가는 방법이다.

따라서 A[2][3] 의 위치를 알려면, 열을 지정된 행의 수 만큼 채우고, 지정된 열의 위치를 찾아가면 된다.


즉, 열의 길이 = 5 이므로,

지정된 행 ( 3 +1 -1) X 행의 길이(5) + 지정된 열(2 + 1)


따라서 위치는 15 + 3 = 18이 된다.


머리로 그림을 그리면 빨리 해결됨!


※ 행 우선과 열 우선은 숫자를 채워 넣는 방식이 다르다!


※ 배열의 주소가 0부터 시작한다면,

1 의 주소가 0이기 때문에

찾은 위치에서 1을 빼야 한다.

(아니면 행 or 열을 더할 때 1을 더하지 말든가)