https://www.acmicpc.net/problem/16935
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define int int64_t
using namespace std;
int board[100][100],board2[100][100],n,m,r;
void upsideDown(){
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) board[i][j] = board2[n - 1 - i][j];
}
void leftToRight(){
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) board[i][j] = board2[i][m - 1 - j];
}
void rightRotate(){
swap(m,n);
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) board[i][j] = board2[m - 1 - j][i];
}
void leftRotate(){
swap(m,n);
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) board[i][j] = board2[j][n - 1 - i];
}
void rotateArea(){
// 1번을 2번으로
for(int i = 0; i < n >> 1; i++) for(int j = 0; j < m >> 1; j++){
board[i][m / 2 + j] = board2[i][j];
}
// 2번을 3번으로
for(int i = 0; i < n >> 1; i++) for(int j = m >> 1; j < m; j++){
board[i + n / 2][j] = board2[i][j];
}
// 3번을 4번으로
for(int i = n >> 1; i < n; i++) for(int j = m >> 1; j < m; j++){
board[i][j - m / 2] = board2[i][j];
}
// 4번을 1번으로
for (int i = 0; i < n >> 1; i++) for (int j = 0; j < m >> 1; j++) {
board[i][j] = board2[i + n / 2][j];
}
}
void reverseRotateArea(){
// 1번을 4번으로
for(int i = 0; i < n >> 1; i++) for(int j = 0; j < m >> 1; j++){
board[i + n / 2][j]= board2[i][j];
}
// 4번을 3번으로
for(int i = n >> 1; i < n; i++) for(int j = 0; j < m >> 1; j++){
board[i][j + m / 2] = board2[i][j];
}
// 3번을 2번으로
for(int i = n >> 1; i < n; i++) for(int j = m >> 1; j < m; j++){
board[i - n / 2][j] = board2[i][j];
}
// 2번을 1번으로
for(int i = 0; i < n >> 1; i++) for(int j = m >> 1; j < m; j++){
board[i][j - m / 2] = board2[i][j];
}
}
int32_t main(){
fastio;
cin >> n >> m >> r;
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> board[i][j];
while(r--){
int q; cin >> q;
for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) board2[i][j] = board[i][j];
if(q == 1) upsideDown();
else if(q == 2) leftToRight();
else if(q == 3) rightRotate();
else if(q == 4) leftRotate();
else if(q == 5) rotateArea();
else if(q == 6) reverseRotateArea();
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << board[i][j] << ' ';
}
cout << "\n";
}
}
그냥 문제에 써있는 데로 구현해주면 됩니다.