728x90
반응형
3 X 3 배열이 아래 그림처럼 2차원 배열로 선언되어있고, 이 배열의 합을 구해보려고 한다.
2차원 배열로 각 행렬을 선언을 해주고, 연산 후 값을 result 배열에 넣어주려고 한다.
#include <stdio.h>
int main()
{
int mat1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int mat2[3][3] = { {1, 0, 8}, {2, 1, 0}, {5, 7, 2} };
int mat3[3][3] = { {3, 4, 7}, {2, 5, 8}, {1, 3, 5} };
int result[3][3] = {{0}};
}
두 가지 방법이 있다.
1. 단일 for문
for (int i = 0; i < 3; i ++)
{
result[i][0] = mat1[i][0] + mat2[i][0] + mat3[i][0];
result[i][1] = mat1[i][1] + mat2[i][1] + mat3[i][1];
result[i][2] = mat1[i][2] + mat2[i][2] + mat3[i][2];
}
2. 이중 for문
for( int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
result[i][j] = mat1[i][j] + mat2[i][j] + mat3[i][j];
}
}
출력
for( int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
printf("%2d ", result[i][j]);
}
printf("\n");
}
1번과 2번으로 나누어 코드를 작성한 이유는 2번은 for문이 총 9번 반복되는 반면, 1번 방법은 for문이 3번밖에 돌지 않는다.
가끔 코드 최적화에 대해 생각해볼 때가 있는데, 이렇게 간단한 코드라도 불필요한 반복문을 줄 일 수 있는 방법을 생각해보는것도 좋은 코딩 습관이라고 생각된다.
'C Programming' 카테고리의 다른 글
C언어 포인터 기초 (선언) - 공부하는 도비 (0) | 2022.10.13 |
---|---|
C언어 행렬 곱셈 - 공부하는 도비 (1) | 2022.10.03 |
C언어 공백 포함 문자열 입력 받기 (scanf, gets) - 공부하는 도비 (0) | 2022.10.03 |
C언어 입력한 년도에 따른 달력 출력 - 공부하는 도비 (1) | 2022.09.30 |
visual studio scanf 오류 해결 방법 5가지 - 공부하는 도비 (1) | 2022.09.30 |