Coding Test/SW Expert Academy

[SWEA] 1961. 숫자 배열 회전 c++

owls 2022. 11. 17. 16:45
728x90
  • 문제

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

N x N 행렬이 주어질 때,

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

 

input output
1
3
1 2 3
4 5 6
7 8 9
#1
741 987 369
852 654 258
963 321 147
  • 문제 해결
0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2

 

> 90도 회전

2,0 1,0 0,0
2,1 1,1 0,1
2,2 1,2 0,2

 

> 180도 회전

2,2 2,1 2,0
1,2 1,1 1,0
0,2 0,1 0,0

 

    > 270도 회전
0,2 1,2 2,2
0,1 1,1 2,1
0,0 1,0 2,0

 

    회전에 따른 인덱스 변화를 확인하면 된다.
#include<iostream>

using namespace std;

int main(int argc, char** argv)
{
	int test_case;
	int T;

	cin>>T;
	int board[7][7];
	for(test_case = 1; test_case <= T; ++test_case)
	{
		int n = 0;
        cin >> n;
        
        for(int i = 0; i < n; i++){
        	for(int j = 0; j < n; j++){
            	scanf("%d", &board[i][j]);
            }
        }
        
        printf("#%d\n", test_case);
        
        for(int i = 0; i < n; i++){
            //90
        	for(int j = 0; j < n; j++){
            	printf("%d", board[n-j-1][i]);
            }
            printf(" ");
            //180
            for(int j = 0; j < n; j++){
            	printf("%d", board[n-i-1][n-j-1]);
            }
            printf(" ");
            //270
            for(int j = 0; j < n; j++){
            	printf("%d", board[j][n-1-i]);
            }
            printf("\n");
        }
        
	}
	return 0;
}

 

728x90