Skip to content

Commit 15416e9

Browse files
authored
Merge pull request #1309 from AlgorithmWithGod/JHLEE325
[20251104] BOJ / G5 / 배열 돌리기 3 / 이준희
2 parents d2bb4c0 + b5434e6 commit 15416e9

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
static int N, M, R;
7+
static int[][] arr;
8+
9+
public static void main(String[] args) throws IOException {
10+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
StringTokenizer st = new StringTokenizer(br.readLine());
12+
N = Integer.parseInt(st.nextToken());
13+
M = Integer.parseInt(st.nextToken());
14+
R = Integer.parseInt(st.nextToken());
15+
arr = new int[N][M];
16+
17+
for (int i = 0; i < N; i++) {
18+
st = new StringTokenizer(br.readLine());
19+
for (int j = 0; j < M; j++) {
20+
arr[i][j] = Integer.parseInt(st.nextToken());
21+
}
22+
}
23+
24+
st = new StringTokenizer(br.readLine());
25+
for (int k = 0; k < R; k++) {
26+
int op = Integer.parseInt(st.nextToken());
27+
switch (op) {
28+
case 1: op1(); break;
29+
case 2: op2(); break;
30+
case 3: op3(); break;
31+
case 4: op4(); break;
32+
case 5: op5(); break;
33+
case 6: op6(); break;
34+
}
35+
}
36+
37+
StringBuilder sb = new StringBuilder();
38+
for (int i = 0; i < arr.length; i++) {
39+
for (int j = 0; j < arr[0].length; j++) {
40+
sb.append(arr[i][j]).append(" ");
41+
}
42+
sb.append("\n");
43+
}
44+
System.out.print(sb);
45+
}
46+
47+
static void op1() {
48+
int[][] tmp = new int[N][M];
49+
for (int i = 0; i < N; i++) {
50+
for (int j = 0; j < M; j++) {
51+
tmp[N-1-i][j] = arr[i][j];
52+
}
53+
}
54+
arr = tmp;
55+
}
56+
57+
static void op2() {
58+
int[][] tmp = new int[N][M];
59+
for (int i = 0; i < N; i++) {
60+
for (int j = 0; j < M; j++) {
61+
tmp[i][M-1-j] = arr[i][j];
62+
}
63+
}
64+
arr = tmp;
65+
}
66+
67+
static void op3() {
68+
int[][] tmp = new int[M][N];
69+
for (int i = 0; i < N; i++) {
70+
for (int j = 0; j < M; j++) {
71+
tmp[j][N-1-i] = arr[i][j];
72+
}
73+
}
74+
arr = tmp;
75+
int t = N;
76+
N = M;
77+
M = t;
78+
}
79+
80+
static void op4() {
81+
int[][] tmp = new int[M][N];
82+
for (int i = 0; i < N; i++) {
83+
for (int j = 0; j < M; j++) {
84+
tmp[M-1-j][i] = arr[i][j];
85+
}
86+
}
87+
arr = tmp;
88+
int t = N;
89+
N = M;
90+
M = t;
91+
}
92+
93+
static void op5() {
94+
int[][] tmp = new int[N][M];
95+
int halfN = N/2;
96+
int halfM = M/2;
97+
for (int i = 0; i < halfN; i++) {
98+
for (int j = 0; j < halfM; j++) {
99+
tmp[i][j + halfM] = arr[i][j];
100+
}
101+
}
102+
for (int i = 0; i < halfN; i++) {
103+
for (int j = halfM; j < M; j++) {
104+
tmp[i + halfN][j] = arr[i][j];
105+
}
106+
}
107+
for (int i = halfN; i < N; i++) {
108+
for (int j = halfM; j < M; j++) {
109+
tmp[i][j - halfM] = arr[i][j];
110+
}
111+
}
112+
for (int i = halfN; i < N; i++) {
113+
for (int j = 0; j < halfM; j++) {
114+
tmp[i - halfN][j] = arr[i][j];
115+
}
116+
}
117+
arr = tmp;
118+
}
119+
120+
static void op6() {
121+
int[][] tmp = new int[N][M];
122+
int halfN = N/2;
123+
int halfM = M/2;
124+
for (int i = 0; i < halfN; i++) {
125+
for (int j = 0; j < halfM; j++) {
126+
tmp[i + halfN][j] = arr[i][j];
127+
}
128+
}
129+
for (int i = halfN; i < N; i++) {
130+
for (int j = 0; j < halfM; j++) {
131+
tmp[i][j + halfM] = arr[i][j];
132+
}
133+
}
134+
for (int i = halfN; i < N; i++) {
135+
for (int j = halfM; j < M; j++) {
136+
tmp[i - halfN][j] = arr[i][j];
137+
}
138+
}
139+
for (int i = 0; i < halfN; i++) {
140+
for (int j = halfM; j < M; j++) {
141+
tmp[i][j - halfM] = arr[i][j];
142+
}
143+
}
144+
arr = tmp;
145+
}
146+
}
147+
```

0 commit comments

Comments
 (0)