배열 좀 그만 돌려ㅜㅜ
와ㅋㅋ 이 문제 풀 때 종만북 재귀로 순열 풀던 거 생각났다.
한 부분이 반복될 때 그걸 따로 빼서 재귀로 돌리는거...
그래서 배열 한 줄 돌리는 부분을 함수로 만들고 재귀로 풀었다!
뿌듯스 ^____^
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <bitset>
#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
int n, m;
int v[300][300];
int tmp[300][300];
void rotate(int now, int depth)
{
if (now == depth)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
v[i][j] = tmp[i][j];
}
return;
}
int s = now, eN = n - now, eM = m - now;
for (int i = s; i < eN - 1; i++)
tmp[i + 1][s] = v[i][s];
for (int i = s; i < eM - 1; i++)
tmp[eN - 1][i + 1] = v[eN - 1][i];
for (int i = eN - 1; i > s; i--)
tmp[i - 1][eM - 1] = v[i][eM - 1];
for (int i = eM - 1; i > s; i--)
tmp[s][i - 1] = v[s][i];
rotate(now + 1, depth);
}
int main()
{
int r;
cin >> n >> m >> r;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cin >> v[i][j];
}
for (int i = 0; i < r; i++)
{
rotate(0, min(n, m) / 2);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
printf("%d ", tmp[i][j]);
printf("\n");
}
return 0;
}
dh.... 이건 북님 코드
완전 깔끔
'백준' 카테고리의 다른 글
18291 비요뜨의 징검다리 건너기 (0) | 2020.09.19 |
---|---|
5671 호텔 방 번호 (0) | 2020.09.19 |
17502 클레어와 팰린드롬 (0) | 2020.09.19 |
16935 배열 돌리기 3 (0) | 2020.09.16 |
1012 유기농 배추 (0) | 2020.09.16 |