-
Notifications
You must be signed in to change notification settings - Fork 0
/
CirculateArray.java
89 lines (66 loc) · 2.74 KB
/
CirculateArray.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class CirculateArray {
private static int[][] resultArr;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int height = Integer.parseInt(st.nextToken());
int width = Integer.parseInt(st.nextToken());
int testCase = Integer.parseInt(st.nextToken());
initResultArr(height, width);
for(int i = 0; i < height; i++) {
st = new StringTokenizer(br.readLine(), " ");
mkResultArr(st, i);
}
for(int i = 0; i < testCase; i++) {
circulateArr();
}
printResult();
}
private static void initResultArr(int height, int width) {
resultArr = new int[height][width];
}
private static void mkResultArr(StringTokenizer st, int height) {
int index = 0;
for(;st.hasMoreTokens();) {
resultArr[height][index++] = Integer.parseInt(st.nextToken());
}
}
private static void circulateArr() {
int length = Math.min(resultArr.length, resultArr[0].length);
int tmp = 0;
int value = 0;
for(int sub = 0; sub < length/2; sub++) {
tmp = resultArr[sub][sub];
for(int width = sub; width < resultArr[0].length - sub - 1; width++) {
resultArr[sub][width] = resultArr[sub][width+1];
}
value = resultArr[resultArr.length-sub-1][sub];
for(int height = resultArr.length - sub - 1; height > sub; height--) {
resultArr[height][sub] = resultArr[height-1][sub];
}
resultArr[sub+1][sub] = tmp;
tmp = resultArr[resultArr.length-sub-1][resultArr[0].length-sub-1];
for(int width = resultArr[0].length - sub - 1; width > sub; width--) {
resultArr[resultArr.length-sub-1][width] = resultArr[resultArr.length-sub-1][width-1];
}
resultArr[resultArr.length-sub-1][sub+1] = value;
for(int height = sub; height < resultArr.length - sub - 1; height++) {
resultArr[height][resultArr[0].length-sub-1] = resultArr[height+1][resultArr[0].length-sub-1];
}
resultArr[resultArr.length-sub-2][resultArr[0].length-sub-1] = tmp;
}
}
private static void printResult() {
StringBuilder sb = new StringBuilder();
for(int[] arr : resultArr) {
for(int value : arr) {
sb.append(value).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}