diff --git "a/JHLEE325/202511/04 BOJ G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" "b/JHLEE325/202511/04 BOJ G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" new file mode 100644 index 00000000..d58cfa24 --- /dev/null +++ "b/JHLEE325/202511/04 BOJ G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" @@ -0,0 +1,147 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + static int N, M, R; + static int[][] arr; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer 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]; + + 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 k = 0; k < R; k++) { + int op = Integer.parseInt(st.nextToken()); + switch (op) { + case 1: op1(); break; + case 2: op2(); break; + case 3: op3(); break; + case 4: op4(); break; + case 5: op5(); break; + case 6: op6(); break; + } + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < arr.length; i++) { + for (int j = 0; j < arr[0].length; j++) { + sb.append(arr[i][j]).append(" "); + } + sb.append("\n"); + } + System.out.print(sb); + } + + static void op1() { + int[][] tmp = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + tmp[N-1-i][j] = arr[i][j]; + } + } + arr = tmp; + } + + static void op2() { + int[][] tmp = new int[N][M]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + tmp[i][M-1-j] = arr[i][j]; + } + } + arr = tmp; + } + + static void op3() { + int[][] tmp = new int[M][N]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + tmp[j][N-1-i] = arr[i][j]; + } + } + arr = tmp; + int t = N; + N = M; + M = t; + } + + static void op4() { + int[][] tmp = new int[M][N]; + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + tmp[M-1-j][i] = arr[i][j]; + } + } + arr = tmp; + int t = N; + N = M; + M = t; + } + + static void op5() { + int[][] tmp = new int[N][M]; + int halfN = N/2; + int halfM = M/2; + for (int i = 0; i < halfN; i++) { + for (int j = 0; j < halfM; j++) { + tmp[i][j + halfM] = arr[i][j]; + } + } + for (int i = 0; i < halfN; i++) { + for (int j = halfM; j < M; j++) { + tmp[i + halfN][j] = arr[i][j]; + } + } + for (int i = halfN; i < N; i++) { + for (int j = halfM; j < M; j++) { + tmp[i][j - halfM] = arr[i][j]; + } + } + for (int i = halfN; i < N; i++) { + for (int j = 0; j < halfM; j++) { + tmp[i - halfN][j] = arr[i][j]; + } + } + arr = tmp; + } + + static void op6() { + int[][] tmp = new int[N][M]; + int halfN = N/2; + int halfM = M/2; + for (int i = 0; i < halfN; i++) { + for (int j = 0; j < halfM; j++) { + tmp[i + halfN][j] = arr[i][j]; + } + } + for (int i = halfN; i < N; i++) { + for (int j = 0; j < halfM; j++) { + tmp[i][j + halfM] = arr[i][j]; + } + } + for (int i = halfN; i < N; i++) { + for (int j = halfM; j < M; j++) { + tmp[i - halfN][j] = arr[i][j]; + } + } + for (int i = 0; i < halfN; i++) { + for (int j = halfM; j < M; j++) { + tmp[i][j - halfM] = arr[i][j]; + } + } + arr = tmp; + } +} +```