Skip to content

Commit bcd1d71

Browse files
authored
[20250817] BOJ / G5 / 배열 돌리기1 / 이인희
1 parent a96703b commit bcd1d71

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
public static void main(String[] args) throws IOException {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
StringTokenizer st = new StringTokenizer(br.readLine());
9+
10+
int N = Integer.parseInt(st.nextToken());
11+
int M = Integer.parseInt(st.nextToken());
12+
int R = Integer.parseInt(st.nextToken());
13+
14+
int[][] map = new int[N][M];
15+
for (int i = 0; i < N; i++) {
16+
st = new StringTokenizer(br.readLine());
17+
for (int j = 0; j < M; j++) {
18+
map[i][j] = Integer.parseInt(st.nextToken());
19+
}
20+
}
21+
int layers = Math.min(N, M) / 2;
22+
int[] dr = {0, 1, 0, -1};
23+
int[] dc = {1, 0, -1, 0};
24+
for (int layer = 0; layer < layers; layer++) {
25+
List<Integer> list = new ArrayList<>();
26+
int r = layer, c = layer;
27+
//경계 길이
28+
int height = N - 2 * layer;
29+
int width = M - 2 * layer;
30+
31+
//한바퀴 돌기
32+
for (int d = 0; d < 4; d++) {
33+
int len = (d % 2 == 0) ? width - 1 : height - 1;
34+
for (int k = 0; k < len; k++) {
35+
list.add(map[r][c]);
36+
r += dr[d];
37+
c += dc[d];
38+
}
39+
}
40+
41+
//회전
42+
int size = list.size();
43+
int rotation = R % size;
44+
45+
r = layer;
46+
c = layer;
47+
int index = 0;
48+
for (int d = 0; d < 4; d++) {
49+
int len = (d % 2 == 0) ? width - 1 : height - 1;
50+
for (int k = 0; k < len; k++) {
51+
map[r][c] = list.get((index + rotation) % size);
52+
r += dr[d];
53+
c += dc[d];
54+
index++;
55+
}
56+
}
57+
}
58+
59+
StringBuilder sb = new StringBuilder();
60+
for (int i = 0; i < N; i++) {
61+
for (int j = 0; j < M; j++) {
62+
sb.append(map[i][j]).append(" ");
63+
}
64+
sb.append("\n");
65+
}
66+
System.out.print(sb);
67+
}
68+
}
69+
```

0 commit comments

Comments
 (0)