Page 84 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 84
앞 그림의 c 에서 볼 수 있는 4행 3열인 2차원 배열의 선언과 내부 구조를 나타낸 것이 그림
2-18입니다. 다차원 배열의 선언은 가장 마지막으로 모은 요소 개수(2차원 배열의 경우는 행의
수)를 맨 앞쪽에 놓습니다.
다음 그림 2-18을 통해 다시 정리하면 배열 a의 요소는 a[0], a[1] a[2] a[3]로 총 4개입니다.
그리고 각 요소(a[n])는 int형이 3개가 모인 int[3]형입니다. 즉, 배열 a 요소의 요소가 int형입
니다.
열의 개수(요소의 요소 개수)
a[0][0]
int a[4][3]; a[0]의 요소는 3개
a[0] a[0][1]
a[0][2]
행의 개수(a의 요소 개수)
a[1][0] a[1]의 요소는 3개
a[1] a[1][1]
a[1][2]
a의 요소는 4개
a[2][0] a[2]의 요소는 3개
a[2] a[2][1]
2차원 배열의 요소는 1차원 배열
a[2][2]
a[3][0] a[3]의 요소는 3개
a[3] a[3][1]
a[3][2]
구성 요소는 모두 12개입니다.
[그림 2-18] 4행 3열의 2차원 배열
배열이 아닌 차원까지 분해한 요소를 이 책에서는 ‘구성 요소’라고 하겠습니다. 각 구성 요소
에 접근하는 식은 첨자 연산자[]를 이어 쓴 a[i][j]입니다. 물론 2차원 배열에서도 인덱스가 0
부터 시작하는 규칙은 1차원 배열과 같습니다. 배열 a의 구성 요소는 a[0][0], a[0][1] a[0]
[2], …, a[3][2]로 모두 12개입니다.
1차원 배열과 마찬가지로 다차원 배열의 모든 요소(전체 구성 요소)는 메모리에 일직선으로 나
란히 줄지어 있습니다. 구성 요소의 순서는 먼저 뒤쪽의 인덱스가 차례대로 커지고, 그런 다
음 앞쪽의 인덱스가 커집니다. 즉, 다음 순서와 같습니다.
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] … a[3][1] a[3][2]
그러므로 a[0][2] 바로 다음에 a[1][0]이 오고 a[2][2] 바로 다음에 a[3][0]이 옵니다.
84 C 알고리즘