Recent Posts
Notice
No Rules Rules
배열 돌리기 3 (feat. 백준, 16935번) 본문
728x90
반응형
배열 돌리기 3
https://www.acmicpc.net/problem/16935
// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int N, M, R, A[101][101], tmp[101][101];
void func1(){
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
tmp[i][j] = A[N - 1 - i][j];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
void func2(){
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
tmp[i][j] = A[i][M - 1 - j];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
void func3(){
register int t = N;
swap(N, M);
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
tmp[i][j] = A[t - 1 - j][i];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
void func4(){
register int t = M;
swap(N, M);
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
tmp[i][j] = A[j][t - 1 - i];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
void func5(){
register int n = N / 2, m = M / 2;
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i][j + m] = A[i][j];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i + n][j + m] = A[i][j + m];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i + n][j] = A[i + n][j + m];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i][j] = A[i + n][j];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
void func6(){
register int n = N / 2, m = M / 2;
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i + n][j + m] = A[i + n][j];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i][j + m] = A[i + n][j + m];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i + n][j] = A[i][j];
for(register int i = 0, j; i < n; ++i)
for(j = 0; j < m; ++j)
tmp[i][j] = A[i][j + m];
for(register int i = 0, j; i < N; ++i)
for(j = 0; j < M; ++j)
A[i][j] = tmp[i][j];
}
int main()
{
ios::sync_with_stdio(false), cin.tie(NULL);
cin >> N >> M >> R;
for(register int n = 0, m; n < N; ++n)
for(m = 0; m < M; ++m)
cin >> A[n][m];
while(R--){
register int t;
cin >> t;
if(t == 1)
func1();
else if(t == 2)
func2();
else if(t == 3)
func3();
else if(t == 4)
func4();
else if(t == 5)
func5();
else
func6();
}
for(register int i = 0, j; i < N; ++i){
for(j = 0; j < M; ++j)
cout << A[i][j] << " ";
cout << "\n";
}
return 0;
}
// *&)*@*
반응형
구현 유형의 문제라 시간은 오래 걸리지만 하나하나 뜯어서 생각해보면 구현 자체는 쉬운 문제입니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
Gorani Command (feat. 백준, 27445번) (0) | 2023.02.17 |
---|---|
그래서 대회 이름 뭐로 하죠 (feat. 백준, 27466번) (0) | 2023.02.16 |
배열 돌리기 1 (feat. 백준, 16926번) (0) | 2023.02.15 |
소수가 아닌 수 (feat. 백준, 27465번) (0) | 2023.02.14 |
N과 M (8) (feat. 백준, 15657번) (0) | 2023.02.14 |
Comments