구현
1,2 의 경우는 행 혹은 열을 반전시킨다.
3,4 의 경우는 과 서로 스왑한 후, 행 혹은 열을 반전시킨다. 물론 과 이 서로 바뀐 상태이기에, 반전 시 {i,j}
형태가 아닌 {j,i}
형태로 배치한다.
5,6 의 경우는 전체배열을 기준으로 나누어 4분할 한 후, {0,0}
~ {N-1, M-1}
까지 알맞게 배치한다.
#include <iostream>
using namespace std;
int a[104][104], tmp[104][104], N, M, R;
void input() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> N >> M >> R;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> a[i][j];
}
}
}
void copyMap() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
a[i][j] = tmp[i][j];
}
}
}
void solve1() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
tmp[i][j] = a[N - i - 1][j];
}
}
copyMap();
}
void solve2() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
tmp[i][j] = a[i][M - j - 1];
}
}
copyMap();
}
void solve3() {
swap(N, M);
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
tmp[i][j] = a[M - j - 1][i];
}
}
copyMap();
}
void solve4() {
swap(N, M);
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
tmp[i][j] = a[j][N - i - 1];
}
}
copyMap();
}
void solve5() {
for (int i = 0; i < N / 2; i++) {
for (int j = 0; j < M / 2; j++) {
tmp[i][j] = a[i+N/2][j];
}
for (int j = 0; j < M / 2; j++) {
tmp[i][j+M/2] = a[i][j];
}
}
for(int i=N/2; i<N; i++) {
for(int j=M/2; j<M; j++) {
tmp[i][j-M/2] = a[i][j];
}
for(int j=M/2; j<M; j++) {
tmp[i][j] = a[i-N/2][j];
}
}
copyMap();
}
void solve6() {
for(int i=0; i<N/2; i++) {
for(int j=0; j<M/2; j++) {
tmp[i][j] = a[i][j+M/2];
}
for(int j=0; j<M/2; j++) {
tmp[i][j+M/2] = a[i+N/2][j+M/2];
}
}
for(int i=N/2; i<N; i++) {
for(int j=M/2; j<M; j++) {
tmp[i][j-M/2] = a[i-N/2][j-M/2];
}
for(int j=M/2; j<M; j++) {
tmp[i][j] = a[i][j-M/2];
}
}
copyMap();
}
void go() {
int num;
for (int i = 0; i < R; i++) {
cin >> num;
switch (num) {
case 1 :
solve1();
break;
case 2 :
solve2();
break;
case 3 :
solve3();
break;
case 4 :
solve4();
break;
case 5 :
solve5();
break;
case 6 :
solve6();
break;
}
}
}
void output() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << a[i][j] << " ";
}
cout << "\n";
}
}
int main() {
input();
go();
output();
}