다차원 배열이란?
C 언어에서는 2차원을 넘어 3차원 이상의 배열도 선언할 수 있으며, 이러한 배열을 다차원 배열(multidimensional array)이라고 부릅니다. 다차원 배열은 행렬 연산, 이미지 처리, 3차원 좌표 데이터 관리 등 복잡한 데이터 구조가 필요한 프로그램에서 널리 활용됩니다.
배열이 가질 수 있는 차원 수의 상한은 표준으로 정해져 있지 않으며, 사용하는 컴파일러에 따라 달라집니다.
다차원 배열 선언 문법
다차원 배열의 일반적인 선언 형식은 다음과 같습니다.
datatype arrayname [size1] [size2] ... [sizen];
예를 들어, 3차원 배열을 선언하는 방법은 아래와 같습니다.
int a[3][3][3];
위 배열이 담을 수 있는 전체 요소의 개수는 각 차원 크기를 곱하여 계산합니다.
요소 개수 = 3 × 3 × 3 = 27개
예제: 5×5 배열의 행 합계와 열 합계 구하기
다음은 실행 시간에 사용자로부터 값을 입력받아(run-time compilation), 5×5 2차원 배열의 행(row)별 합계와 열(column)별 합계를 계산하는 C 프로그램입니다.
#include <stdio.h>
int main() {
// 배열 및 변수 선언 //
int A[5][5], i, j, row = 0, column = 0;
// 배열에 요소 입력받기 //
printf("Enter elements into the array : \n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
printf("A[%d][%d] : ", i, j);
scanf("%d", &A[i][j]);
}
}
// 각 행의 요소 합계 계산 //
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
row = row + A[i][j];
}
printf("The sum of elements in row number %d is : %d\n", i, row);
row = 0;
}
// 각 열의 요소 합계 계산 //
for (j = 0; j < 5; j++) {
for (i = 0; i < 5; i++) {
column = column + A[i][j];
}
printf("The sum of elements in column number %d is : %d\n", j, column);
column = 0;
}
return 0;
}참고: 원본 코드의 열 합계 출력 부분에는 루프 변수
j대신i를 사용해 모든 결과가 "column number 5"로 잘못 표시되는 오류가 있었습니다. 위 코드에서는 이를j로 수정하여 올바른 열 번호가 출력되도록 했습니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter elements into the array : A[0][0] : 1 A[0][1] : 2 A[0][2] : 4 A[0][3] : 3 A[0][4] : 5 A[1][0] : 2 A[1][1] : 5 A[1][2] : 6 A[1][3] : 7 A[1][4] : 2 A[2][0] : 3 A[2][1] : 6 A[2][2] : 2 A[2][3] : 6 A[2][4] : 7 A[3][0] : 2 A[3][1] : 7 A[3][2] : 4 A[3][3] : 3 A[3][4] : 1 A[4][0] : 4 A[4][1] : 5 A[4][2] : 6 A[4][3] : 7 A[4][4] : 8 The sum of elements in row number 0 is : 15 The sum of elements in row number 1 is : 22 The sum of elements in row number 2 is : 24 The sum of elements in row number 3 is : 17 The sum of elements in row number 4 is : 30 The sum of elements in column number 0 is : 12 The sum of elements in column number 1 is : 25 The sum of elements in column number 2 is : 22 The sum of elements in column number 3 is : 26 The sum of elements in column number 4 is : 23
핵심 정리
- C 언어는 3차원 이상의 다차원 배열을 지원하며, 최대 차원 수는 컴파일러마다 다릅니다.
- 배열의 총 요소 개수는 각 차원 크기의 곱으로 계산됩니다.
- 행 합계는 바깥 루프를 행 기준으로, 열 합계는 바깥 루프를 열 기준으로 순회하면 손쉽게 구할 수 있습니다.
- 출력 시 반드시 해당 루프의 인덱스 변수를 사용해야 의도한 번호가 정확히 표시됩니다.