지식보부상님의 공부 일지

SWEA 1961번: 숫자 배열 회전 본문

C언어 문제풀이

SWEA 1961번: 숫자 배열 회전

지식보부상님 2023. 11. 6. 16:24
N x N 행렬이 주어질 때,

시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라.


[제약 사항]

N은 3 이상 7 이하이다.

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에 N이 주어지고,

다음 N 줄에는 N x N 행렬이 주어진다.

[출력]

출력의 첫 줄은 '#t'로 시작하고,

다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다.

입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 7

int print_row(int*, int);

int main() {
	int test_case, i, N, j, k;
	int matrix[MAXSIZE][MAXSIZE] = { 0, };
	int matrix_90[MAXSIZE][MAXSIZE] = { 0, };
	int matrix_180[MAXSIZE][MAXSIZE] = { 0, };
	int matrix_270[MAXSIZE][MAXSIZE] = { 0, };

	scanf("%d", &test_case);
	for (i = 0; i < test_case; i++) {
		scanf("%d", &N);
		for (j = 0; j < N; j++)
			for (k = 0; k < N; k++) 
				scanf("%d", &matrix[j][k]);

		for (j = 0; j < N; j++) {
			for (k = 0; k < N; k++) {
				matrix_90[j][k] = matrix[N - k - 1][j];
				matrix_180[j][k] = matrix[N - j - 1][N - k - 1];
				matrix_270[j][k] = matrix[k][N - j - 1];
			}
		}

		printf("#%d\n", i+1);
		for (j = 0; j < N; j++) {
			print_row(matrix_90[j], N);
			printf(" ");
			print_row(matrix_180[j], N);
			printf(" ");
			print_row(matrix_270[j], N);
			printf("\n");
		}
}
	return 0;
}

int print_row(int*matrix, int size) {
	int i = 0;
	for (i = 0; i < size; i++)
		printf("%d", matrix[i]);
}

 

제출결과

 

'C언어 문제풀이' 카테고리의 다른 글

SWEA 1959번: 두 개의 숫자열  (4) 2023.11.06
SWEA 2001번: 파리 퇴치  (2) 2023.11.06
백준 10845번: 큐  (1) 2023.04.21
백준 10773번: 제로  (0) 2023.04.21
백준 10828번: 스택  (2) 2023.04.20