프로그램 개요
이 프로그램은 정사각 행렬의 요소들을 Z자 형태로 출력합니다. 정사각 행렬이란 행과 열의 개수가 동일한 행렬을 의미하며, n개의 행과 n개의 열로 구성된 행렬을 n차 정사각 행렬이라고 부릅니다.
Z 형태 출력이란 행렬의 요소를 영문 대문자 'Z'를 그리듯이 순서대로 읽어내는 방식을 말합니다.
알고리즘

정사각 행렬을 Z 형태로 출력하기 위해서는 다음 세 가지 부분을 순서대로 출력해야 합니다.
- 첫 번째 행: 행렬의 맨 윗줄에 있는 모든 요소를 왼쪽에서 오른쪽으로 출력합니다.
- 반대 대각선: 오른쪽 상단에서 왼쪽 하단으로 이어지는 대각선 요소를 출력합니다.
- 마지막 행: 행렬의 맨 아랫줄에 있는 모든 요소를 왼쪽에서 오른쪽으로 출력합니다.
이 세 부분이 연결되면 마치 알파벳 'Z'와 같은 형태가 됩니다.
C 언어 예제 코드
/* 정사각 행렬을 Z 형태로 출력하는 프로그램 */
#include<stdio.h>
int main(){
int rows, cols, r, c, matrix[10][10];
clrscr(); /* 화면 지우기 */
printf("정사각 행렬의 행 수를 입력하세요: ");
scanf("%d", &rows);
printf("\n");
printf("정사각 행렬의 열 수를 입력하세요: ");
scanf("%d", &cols);
printf("\n");
printf("행렬의 요소를 입력하세요: \n");
for(r = 0; r < rows; r++){
for(c = 0; c < cols; c++){
scanf("%d", &matrix[r][c]);
}
}
printf("정사각 행렬의 Z 형태 요소는 다음과 같습니다: ");
printf("\n");
/* 첫 번째 행 출력 */
for(r = 0; r < rows; r++){
printf("%d\t ", matrix[0][r]);
}
/* 반대 대각선 출력 */
for (r=1, c=cols-2; r<cols && c>=0; r++, c--){
printf("%d\t ", matrix[r][c]);
}
/* 마지막 행 출력 */
for (r = 1; r < cols; r++){
printf("%d\t ", matrix[cols-1][r]);
}
getch();
return 0;
}
코드 설명
- 입력 부분: 중첩된 for 루프를 사용하여 사용자로부터 행렬의 크기와 각 요소를 입력받아 2차원 배열
matrix[10][10]에 저장합니다. - 첫 번째 루프:
matrix[0][r]에 접근하여 첫 번째 행의 모든 요소를 출력합니다. - 두 번째 루프: 행 인덱스
r는 1부터 증가하고, 열 인덱스c는cols-2부터 감소하면서 오른쪽 위에서 왼쪽 아래로 이어지는 반대 대각선 요소를 출력합니다. - 세 번째 루프:
matrix[cols-1][r]에 접근하여 마지막 행의 나머지 요소를 출력합니다.
참고로 clrscr()과 getch() 함수는 Turbo C 계열 컴파일러에서 제공되는 함수로, 최신 컴파일러(GCC 등)에서 사용하려면 #include<conio.h> 헤더가 필요하거나 해당 호출을 제거해야 할 수 있습니다.
실행 결과
