C언어 초급 - 8장: 배열과 문자열 (8.2 다차원 배열)
2025. 2. 23. 19:12ㆍ프로그래밍 언어/C
8.2 다차원 배열
C 언어에서 다차원 배열(Multi-dimensional Array) 은 여러 개의 차원을 가지는 배열입니다.
가장 많이 사용되는 2차원 배열은 행과 열의 구조를 가지며, 행렬(matrix) 연산이나 2D 데이터 저장 및 처리에 유용합니다.
1. 2차원 배열의 선언 및 활용
1.1 2차원 배열 선언
2차원 배열을 선언하는 기본 문법은 다음과 같습니다.
자료형 배열이름[행][열];
📌 배열의 크기(행과 열)는 반드시 정수여야 하며, 선언 후 변경할 수 없음.
1.2 2차원 배열 선언 예제
#include <stdio.h>
int main() {
int matrix[3][4]; // 3행 4열의 2차원 배열 선언
return 0;
}
📌 설명
- int matrix[3][4]; → 3개의 행(row), 4개의 열(column)을 가지는 배열 선언.
- 각 요소는 matrix[행][열] 형식으로 접근 가능.
1.3 2차원 배열 초기화
2차원 배열을 선언과 동시에 초기화할 수 있습니다.
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
📌 초기화된 값은 메모리에 연속적으로 저장됨.
1.4 2차원 배열 초기화 예제
#include <stdio.h>
int main() {
int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 2행 3열 배열 선언 및 초기화
printf("matrix[0][1] = %d\n", matrix[0][1]); // 2 출력
printf("matrix[1][2] = %d\n", matrix[1][2]); // 6 출력
return 0;
}
출력 결과
matrix[0][1] = 2
matrix[1][2] = 6
📌 설명
- matrix[0][1] → 첫 번째 행, 두 번째 열의 값(2).
- matrix[1][2] → 두 번째 행, 세 번째 열의 값(6).
2. 2차원 배열과 반복문
2차원 배열은 이중 반복문(nested loop) 을 사용하면 쉽게 데이터를 입력하고 출력할 수 있습니다.
2.1 2차원 배열을 사용한 데이터 입력 및 출력
#include <stdio.h>
int main() {
int matrix[2][3];
// 배열 입력 받기
printf("2×3 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("matrix[%d][%d] = ", i, j);
scanf("%d", &matrix[i][j]);
}
}
// 배열 출력하기
printf("\n입력한 행렬:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n"); // 행 구분
}
return 0;
}
실행 예시
2×3 행렬의 요소를 입력하세요:
matrix[0][0] = 1
matrix[0][1] = 2
matrix[0][2] = 3
matrix[1][0] = 4
matrix[1][1] = 5
matrix[1][2] = 6
입력한 행렬:
1 2 3
4 5 6
📌 설명
- 중첩 반복문(for 문)을 사용하여 배열을 입력 및 출력.
- printf("\n")을 사용하여 각 행을 구분.
3. 행렬 연산
3.1 행렬 덧셈 (Matrix Addition)
행렬 덧셈은 같은 크기의 행렬을 더하는 연산입니다.
예제 – 두 행렬의 합
#include <stdio.h>
int main() {
int A[2][2] = { {1, 2}, {3, 4} };
int B[2][2] = { {5, 6}, {7, 8} };
int result[2][2];
// 행렬 덧셈
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
result[i][j] = A[i][j] + B[i][j];
}
}
// 결과 출력
printf("행렬 덧셈 결과:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
출력 결과
행렬 덧셈 결과:
6 8
10 12
📌 설명
- result[i][j] = A[i][j] + B[i][j]; → 각 요소끼리 더함.
3.2 행렬 곱셈 (Matrix Multiplication)
행렬 곱셈은 행렬의 곱셈 규칙을 따라 수행됩니다.
예제 – 두 행렬의 곱
#include <stdio.h>
int main() {
int A[2][3] = { {1, 2, 3}, {4, 5, 6} };
int B[3][2] = { {7, 8}, {9, 10}, {11, 12} };
int result[2][2] = {0};
// 행렬 곱셈 연산
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 3; k++) {
result[i][j] += A[i][k] * B[k][j];
}
}
}
// 결과 출력
printf("행렬 곱셈 결과:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
출력 결과
행렬 곱셈 결과:
58 64
139 154
📌 설명
- result[i][j] += A[i][k] * B[k][j]; → 행렬 곱셈 공식 적용.
- A가 2×3 행렬, B가 3×2 행렬이므로 결과는 2×2 행렬.
4. 정리
개념 | 설명 | 예제 |
2차원 배열 선언 | 행과 열을 가진 배열 선언 | int arr[3][4]; |
2차원 배열 초기화 | 중괄호 {}를 사용하여 초기값 설정 | int arr[2][2] = {{1, 2}, {3, 4}}; |
2차원 배열과 반복문 | for 문을 사용하여 배열 요소 입력 및 출력 | for (i=0; i<행; i++) for (j=0; j<열; j++) |
행렬 덧셈 | 같은 크기의 행렬을 더함 | result[i][j] = A[i][j] + B[i][j]; |
행렬 곱셈 | 행렬 곱셈 규칙 적용 | result[i][j] += A[i][k] * B[k][j]; |
📌 2차원 배열은 행과 열 구조를 가지며, 메모리에서 연속적으로 저장됨
📌 반복문을 활용하면 데이터를 효율적으로 처리 가능
📌 행렬 연산(덧셈, 곱셈)도 반복문을 이용하여 구현 가능
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 초급 - 9장: 함수 (Function) (9.1 함수의 개념과 필요성) (0) | 2025.02.24 |
---|---|
C언어 초급 - 8장: 배열과 문자열 (8.3 문자열 (char 배열)) (0) | 2025.02.23 |
C언어 초급 - 8장: 배열과 문자열 (8.1 배열의 개념) (0) | 2025.02.23 |
C언어 초급 - 7장: 반복문 (7.4 반복문의 제어 (break, continue)) (0) | 2025.02.23 |
C언어 초급 - 7장: 반복문 (7.3 for 문) (0) | 2025.02.23 |