이번 문제는 특정 알고리즘을 사용하지 않고 구현하는 문제였다.
#include <iostream>
#define MAX 301
using namespace std;
int n,m,r;
int arr[MAX][MAX];
int result[MAX][MAX];
void Input(){
cin>>n>>m>>r;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin>>arr[i][j];
}
}
}
void Solution(){
while(r--){
int y1=0, x1=0;
int y2=0, x2=m-1;
int y3=n-1, x3=m-1;
int y4=n-1, x4=0;
while(y1<y4&&x1<x2){
int temp=arr[y1][x1];
for(int i=x1; i<x2; i++){
arr[y1][i] = arr[y1][i+1];
}
for(int i=y2; i<y3; i++){
arr[i][x2] = arr[i+1][x2];
}
for(int i=x3; i>x4; i--){
arr[y3][i] = arr[y3][i-1];
}
for(int i=y4; i>y1; i--){
arr[i][x4] = arr[i-1][x4];
}
arr[y1+1][x4] = temp;
y1++;
x1++;
y2++;
x2--;
y3--;
x3--;
y4--;
x4++;
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution();
return 0;
}