표준 입력으로 5X5 정사각행렬이 입력됩니다. 다음 소스 코드를 완성하여 입력된 행렬의 전치행렬이 출력되게 만드세요. 전치행렬은 왼쪽 위부터 오른쪽 아래까지의 대각선(주대각선)을 기준으로 값을 뒤집은 행렬을 말합니다.
표준 입력
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
표준 출력
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
judge_transpose_of_matrix.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int matrix[5][5];
scanf("%d %d %d %d %d",
&matrix[0][0], &matrix[0][1], &matrix[0][2], &matrix[0][3], &matrix[0][4]);
scanf("%d %d %d %d %d",
&matrix[1][0], &matrix[1][1], &matrix[1][2], &matrix[1][3], &matrix[1][4]);
scanf("%d %d %d %d %d",
&matrix[2][0], &matrix[2][1], &matrix[2][2], &matrix[2][3], &matrix[2][4]);
scanf("%d %d %d %d %d",
&matrix[3][0], &matrix[3][1], &matrix[3][2], &matrix[3][3], &matrix[3][4]);
scanf("%d %d %d %d %d",
&matrix[4][0], &matrix[4][1], &matrix[4][2], &matrix[4][3], &matrix[4][4]);
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
return 0;
}
정답
for (int m = 0; m < 5; m++)
{
for (int n = 0; n < 5; n++)
{
printf("%d ", matrix[n][m]);
}
printf("\n");
}
풀이
전치행렬에 대한 설명을 왼쪽 위부터 오른쪽 아래까지의 대각선을 기준으로 값을 뒤집은 행렬이라고 설명하는데. 간단히 생각해보자 할 때, 예를 들어, 테스트 케이스 예제에 숫자 2는 matrix[0][1]에 저장돼있고, 출력할 때는 matrix[1][0]의 위치에서 출력되고 있다. 따라서 UNIT31에서 배웠던 중첩 루프를 활용하여 바깥쪽 루프는 세로 방향, 안쪽 루프는 가로 방향을 처리하는 것을 뒤집어서 코드를 만들면 해결할 수 있다. 즉 안쪽 루프에 실행식을 matrix[n][m]과 같이 세로가 가로로, 가로가 세로로 출력되게끔 만들면 된다.
'C' 카테고리의 다른 글
[C] C언어 코딩 도장 38.7 심사문제: 단위행렬 만들기 (0) | 2022.04.27 |
---|---|
[C] C언어 코딩 도장 36.13 심사문제: 가장 작은 수 출력하기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 35.7 심사문제: 두 정수의 합 구하기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 34.10 심사문제: 포인터와 주소 연산자 사용하기 (0) | 2022.04.27 |
[C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기 (0) | 2022.04.27 |