From e01240bf831397d400cdbf84f888c577306aceac Mon Sep 17 00:00:00 2001 From: Jinyeong Seol Date: Tue, 4 Nov 2025 23:40:51 +0900 Subject: [PATCH] =?UTF-8?q?[20251031]=20BOJ=20/=20G5=20/=20=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=ED=8A=B8=20/=20=EC=9D=B4=EC=A2=85=ED=99=98?= =?UTF-8?q?=20suOCKER?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\217\214\353\246\254\352\270\260 3.md" | 176 ++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 "Seol-JY/202511/04 BO G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" diff --git "a/Seol-JY/202511/04 BO G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" "b/Seol-JY/202511/04 BO G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" new file mode 100644 index 00000000..d6550da1 --- /dev/null +++ "b/Seol-JY/202511/04 BO G5 \353\260\260\354\227\264 \353\217\214\353\246\254\352\270\260 3.md" @@ -0,0 +1,176 @@ +```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 i = 0; i < R; i++) { + int op = Integer.parseInt(st.nextToken()); + arr = operation(arr, op); + } + + 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 int[][] operation(int[][] array, int op) { + switch (op) { + case 1: return op1(array); + case 2: return op2(array); + case 3: return op3(array); + case 4: return op4(array); + case 5: return op5(array); + case 6: return op6(array); + default: return array; + } + } + + static int[][] op1(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[rows][cols]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + result[i][j] = array[rows - 1 - i][j]; + } + } + return result; + } + + static int[][] op2(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[rows][cols]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + result[i][j] = array[i][cols - 1 - j]; + } + } + return result; + } + + static int[][] op3(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[cols][rows]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + result[j][rows - 1 - i] = array[i][j]; + } + } + return result; + } + + static int[][] op4(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[cols][rows]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + result[cols - 1 - j][i] = array[i][j]; + } + } + return result; + } + + static int[][] op5(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[rows][cols]; + + int halfR = rows / 2; + int halfC = cols / 2; + + for (int i = 0; i < halfR; i++) { + for (int j = 0; j < halfC; j++) { + result[i][j + halfC] = array[i][j]; + } + } + + for (int i = 0; i < halfR; i++) { + for (int j = halfC; j < cols; j++) { + result[i + halfR][j] = array[i][j]; + } + } + + for (int i = halfR; i < rows; i++) { + for (int j = halfC; j < cols; j++) { + result[i][j - halfC] = array[i][j]; + } + } + + for (int i = halfR; i < rows; i++) { + for (int j = 0; j < halfC; j++) { + result[i - halfR][j] = array[i][j]; + } + } + + return result; + } + + static int[][] op6(int[][] array) { + int rows = array.length; + int cols = array[0].length; + int[][] result = new int[rows][cols]; + + int halfR = rows / 2; + int halfC = cols / 2; + + for (int i = 0; i < halfR; i++) { + for (int j = 0; j < halfC; j++) { + result[i + halfR][j] = array[i][j]; + } + } + + for (int i = 0; i < halfR; i++) { + for (int j = halfC; j < cols; j++) { + result[i][j - halfC] = array[i][j]; + } + } + + for (int i = halfR; i < rows; i++) { + for (int j = halfC; j < cols; j++) { + result[i - halfR][j] = array[i][j]; + } + } + + for (int i = halfR; i < rows; i++) { + for (int j = 0; j < halfC; j++) { + result[i][j + halfC] = array[i][j]; + } + } + + return result; + } +} +```