C Programming

C언어 2차원 배열의 합 - 공부하는 도비

DOVISH WISDOM 2022. 10. 3. 17:25  
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번밖에 돌지 않는다.  

 

가끔 코드 최적화에 대해 생각해볼 때가 있는데, 이렇게 간단한 코드라도 불필요한 반복문을 줄 일 수 있는 방법을 생각해보는것도 좋은 코딩 습관이라고 생각된다.