배열이 주어졌을 때, 배열에 저장된 모든 모서리(corner) 요소의 합을 구하여 출력하는 것이 이번 포스팅의 목표입니다.
행(row)이 'r'개이고 열(column)이 'c'개인 행렬 mat[r][c]가 있다고 가정해 보겠습니다. 행과 열은 0부터 시작하므로, 이 행렬의 네 모서리 요소는 각각 다음과 같습니다.
- mat[0][0] — 왼쪽 위
- mat[0][c-1] — 오른쪽 위
- mat[r-1][0] — 왼쪽 아래
- mat[r-1][c-1] — 오른쪽 아래
따라서 우리가 해야 할 일은 이 네 요소를 더하는 것입니다. 즉, mat[0][0] + mat[0][c-1] + mat[r-1][0] + mat[r-1][c-1]을 계산한 뒤 그 결과를 화면에 출력하면 됩니다.
예시
입력: 행렬 요소 입력 :
10 2 10
2 3 4
10 4 10
출력: 행렬의 합 : 40위 예시에서 모서리 요소는 10, 10, 10, 10이며, 이들의 합인 40이 출력됩니다.
알고리즘
START
Step 1-> 행과 열을 매크로로 정의 (#define row 3, #define col 3)
Step 2 -> main()
int sum=0 선언, 배열 a[row][col] 및 변수 int i, j, n 선언
Loop For i=0 and i<3 and i++
Loop For j=0 and j<3 and j++
a[i][j] 값 입력 받기
End
End
a[0][0] + a[0][row-1] + a[col-1][0] + a[col-1][row-1] 출력
STOPC 코드 구현
#include<stdio.h>
#define row 3
#define col 3
int main(){
int sum=0,a[row][col],i,j,n;
printf("Enter the matrix elements : ");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
printf("sum of matrix is : %d",a[0][0] + a[0][row-1] +a[col-1][0] + a[col-1][row-1] );
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter the matrix elements : 10 2 10 2 3 4 10 4 10 sum of matrix is : 40
이처럼 별도의 반복문으로 모서리를 탐색할 필요 없이, 인덱스 [0][0], [0][col-1], [row-1][0], [row-1][col-1]에 직접 접근하는 것만으로도 행렬의 네 모서리 요소의 합을 손쉽게 구할 수 있습니다.