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