[ 문제 ]
[ 접근방법 ]
제일 바깥 테두리부터 시작하여 안쪽으로 들어가며 회전 결과를 저장하였다.
테두리에 속하는 숫자들을 큐에 넣은 후, 큐 앞의 숫자들을 뒤에 넣음으로써 회전을 처리했다.
[ 소스코드 ]
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int n, m, t;
int arr[305][305], brr[305][305];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> t;
for(int i = 0; i < n; i++)for(int j = 0; j < m; j++)cin >> arr[i][j];
for(int i = 0; i < min(n, m) / 2; i++){
queue<int> que;
for(int j = i; j < m - i - 1; j++)que.push(arr[i][j]);
for(int j = i; j < n - i - 1; j++)que.push(arr[j][m - i - 1]);
for(int j = m - i - 1; j > i; j--)que.push(arr[n - i - 1][j]);
for(int j = n - i - 1; j > i; j--)que.push(arr[j][i]);
for(int j = 0; j < t; j++){
que.push(que.front());
que.pop();
}
for(int j = i; j < m - i - 1; j++){
brr[i][j] = que.front();
que.pop();
}
for(int j = i; j < n - i - 1; j++){
brr[j][m - i - 1] = que.front();
que.pop();
}
for(int j = m - i - 1; j > i; j--){
brr[n - i - 1][j] = que.front();
que.pop();
}
for(int j = n - i - 1; j > i; j--){
brr[j][i] = que.front();
que.pop();
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << brr[i][j] << " ";
}
cout << "\n";
}
return 0;
}
'PS' 카테고리의 다른 글
[ 백준 / C++ ] 2965 : 캥거루 세마리 (0) | 2025.01.15 |
---|---|
[ 백준 / C++ ] 2661 : 좋은수열 (0) | 2025.01.14 |
[ 백준 / C++ ] 2212 : 센서 (0) | 2025.01.09 |
[ 백준 / C++ ] 1783 : 병든 나이트 (0) | 2025.01.08 |
[ 백준 / C++ ] 19237 : 어른 상어 (0) | 2025.01.06 |