[자료구조] 배열의 열 우선, 행 우선
* 행 우선 배열
A[6]이라는 배열이 있을 때
A[6] | A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | |
1 | 2 | 3 | 4 | 5 | 6 |
※보통※ 이런 모양을 생각한다. 이 경우 이차원 배열을 생성하면 줄이 늘어난다.
* 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] | 1 | 2 | 3 | 4 | 5 | 6 |
A[1][m] | 7 | 8 | 9 | 10 | 11 | 12 |
A[2][m] | 13 | 14 | 15 | 16 | 17 | 18 |
...
기본적으로 생각하는 이런 방식은 행 우선 방식이다.
즉, 행(두 번째 첨자)을 먼저 채우고, 열(첫 번째 첨자)로 넘어가는 방법이다.
따라서 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[2][3] 의 위치를 알려면, 열을 지정된 행의 수 만큼 채우고, 지정된 열의 위치를 찾아가면 된다.
즉, 열의 길이 = 5 이므로,
지정된 행 ( 3 +1 -1) X 행의 길이(5) + 지정된 열(2 + 1)
따라서 위치는 15 + 3 = 18이 된다.
머리로 그림을 그리면 빨리 해결됨!
※ 행 우선과 열 우선은 숫자를 채워 넣는 방식이 다르다!
※ 배열의 주소가 0부터 시작한다면,
1 의 주소가 0이기 때문에
찾은 위치에서 1을 빼야 한다.
(아니면 행 or 열을 더할 때 1을 더하지 말든가)