BOJ_S1_16935
๐ [S1_16935] ๋ฐฐ์ด๋๋ฆฌ๊ธฐ 3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
static int N, M, R;
// ๋ฐฐ์ด ์
๋ ฅ
static int[][] arr;
// ๋ฐฐ์ด ์ถ๋ ฅ
static int[][] arr_res;
static int[] num;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
R = Integer.parseInt(st.nextToken());
arr = new int[N][M];
num = new int[R];
// ๋ฐฐ์ด ์
๋ ฅ
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < M; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// ์ฐ์ฐ ์
๋ ฅ
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < R; i++) {
num[i] = Integer.parseInt(st.nextToken());
}
// R ๋งํผ ์ฐ์ฐ ์ํ
for (int i = 0; i < R; i++) {
switch (num[i]) {
// ์ํ ๋ฐ์
case 1:
one();
break;
// ์ข์ฐ ๋ฐ์
case 2:
two();
break;
// ์ค๋ฅธ์ชฝ 90๋ ํ์
case 3:
three();
break;
// ์ผ์ชฝ 90๋ ํ์
case 4:
four();
break;
// ๋ถ๋ถ ๋ฐฐ์ด ๋๋๊ณ 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ธฐ, 1->2, 2->3, 3->4, 4->1
case 5:
five();
break;
// ๋ถ๋ถ ๋ฐฐ์ด ๋๋๊ณ 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ธฐ, 1->4, 4->3, 3->2, 2->1
case 6:
six();
break;
}
}
show();
}
// ์ํ ๋ฐ์
static void one() {
arr_res = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr_res[i][j] = arr[N - (i + 1)][j];
}
}
init();
}
// ์ข์ฐ ๋ฐ์
static void two() {
arr_res = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr_res[i][j] = arr[i][M - (j + 1)];
}
}
init();
}
// ์ค๋ฅธ์ชฝ 90๋ ํ์
static void three() {
arr_res = new int[M][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr_res[j][N - 1 - i] = arr[i][j];
}
}
init();
}
// ์ผ์ชฝ 90๋ ํ์
static void four() {
arr_res = new int[M][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr_res[M - 1 - j][i] = arr[i][j];
}
}
init();
}
// ๋ถ๋ถ ๋ฐฐ์ด ๋๋๊ณ 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ธฐ, 1->2, 2->3, 3->4, 4->1
static void five() {
arr_res = new int[N][M];
// 1 ๊ทธ๋ฃน -> 2 ๊ทธ๋ฃน
for (int i = 0; i < N / 2; i++) {
for (int j = 0; j < M / 2; j++) {
arr_res[i][M / 2 + j] = arr[i][j];
}
}
// 2 ๊ทธ๋ฃน -> 3 ๊ทธ๋ฃน
for (int i = 0; i < N / 2; i++) {
for (int j = M / 2; j < M; j++) {
arr_res[i + N / 2][j] = arr[i][j];
}
}
// 3 ๊ทธ๋ฃน -> 4 ๊ทธ๋ฃน
for (int i = N / 2; i < N; i++) {
for (int j = M / 2; j < M; j++) {
arr_res[i][j - M / 2] = arr[i][j];
}
}
// 4 ๊ทธ๋ฃน -> 1 ๊ทธ๋ฃน
for (int i = N / 2; i < N; i++) {
for (int j = 0; j < M / 2; j++) {
arr_res[i - N / 2][j] = arr[i][j];
}
}
init();
}
// ๋ถ๋ถ ๋ฐฐ์ด ๋๋๊ณ 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ธฐ, 1->4, 4->3, 3->2, 2->1
static void six() {
arr_res = new int[N][M];
// 1 ๊ทธ๋ฃน -> 4 ๊ทธ๋ฃน
for (int i = 0; i < N / 2; i++) {
for (int j = 0; j < M / 2; j++) {
arr_res[i + N / 2][j] = arr[i][j];
}
}
// 4 ๊ทธ๋ฃน -> 3 ๊ทธ๋ฃน
for (int i = N / 2; i < N; i++) {
for (int j = 0; j < M / 2; j++) {
arr_res[i][j + M / 2] = arr[i][j];
}
}
// 3 ๊ทธ๋ฃน -> 2 ๊ทธ๋ฃน
for (int i = N / 2; i < N; i++) {
for (int j = M / 2; j < M; j++) {
arr_res[i - N / 2][j] = arr[i][j];
}
}
// 2 ๊ทธ๋ฃน -> 1 ๊ทธ๋ฃน
for (int i = 0; i < N / 2; i++) {
for (int j = M / 2; j < M; j++) {
arr_res[i][j - M / 2] = arr[i][j];
}
}
init();
}
// ๋ฐฐ์ด ์ถ๋ ฅ
static void show() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
// arr ๋์ ๊ด๋ฆฌ
static void init() {
// ๋ง์ฝ 3,4 ๋ฒ์ ํ๋ค๋ฉด
if (arr_res.length != N && arr_res[0].length != M) {
int temp = N;
N = M;
M = temp;
arr = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr[i][j] = arr_res[i][j];
}
}
}
else {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arr[i][j] = arr_res[i][j];
}
}
}
}
}
๐ค ๋์ ์๊ฐ
๋ฐฐ์ด๋ค์ ์ขํ์ฒ๋ผ ์๊ฐํ์ฌ ์ฎ๊ธด๋ค ์๊ฐํ๋ฉด ๊ฐ๋ณ๊ฒ ํ ์ ์์ ๊ฒ์ด๋ค.
๋จ์ง ์ข ํท๊ฐ๋ฆฐ ๊ฒ์ ์ฐ์ฐ์ ์ฌ๋ฌ๋ฒ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐํ ํด์ฃผ๋ ๊ฒ๊ณผ
3,4๋ฒ์ ์งํํ ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ๋ง ์ฃผ์ํด์ ํ์ด์ฃผ๋ฉด ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.