Skip to content

Commit 366c989

Browse files
committed
[Simulation] baekjoon-17144
1 parent 76c275f commit 366c989

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

Diff for: โ€ŽREADME.md

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
| 24 | | [SWEA-4014 ํ™œ์ฃผ๋กœ ๊ฑด์„ค](./src/Simulation/swea4014) | ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ |
6464
| 25 | | [Baekjoon-17779 ๊ฒŒ๋ฆฌ๋งจ๋”๋ง 2](./src/Simulation/P17779) | |
6565
| 26 | | [Baekjoon-2564 ๊ฒฝ๋น„์›](./src/Simulation/P2564) | |
66+
| 27 | | [Baekjoon-17144 ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•!](./src/Simulation/P17144) | |
6667

6768
## String
6869

Diff for: โ€Žsrc/Simulation/P17144/Main.java

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package Simulation.P17144;
2+
3+
import java.io.*;
4+
import java.util.*;
5+
6+
public class Main {
7+
8+
static int R, C, T, pi, pj, ans;
9+
static int[][] A, tmp;
10+
static int[] di = {-1, 0, 1, 0}, dj = {0, 1, 0, -1};
11+
12+
public static void main(String[] args) throws Exception {
13+
System.setIn(new FileInputStream("src/Simulation/P17144/input.txt"));
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
R = Integer.parseInt(st.nextToken());
18+
C = Integer.parseInt(st.nextToken());
19+
T = Integer.parseInt(st.nextToken());
20+
A = new int[R][C];
21+
for (int i = 0; i < R; i++) {
22+
st = new StringTokenizer(br.readLine());
23+
for (int j = 0; j < C; j++) {
24+
A[i][j] = Integer.parseInt(st.nextToken());
25+
if (A[i][j] == -1) { pi = i; pj = j; }
26+
}
27+
}
28+
29+
while (T-- > 0) {
30+
tmp = new int[R][C];
31+
spread();
32+
for (int i = 0; i < R; i++) {
33+
A[i] = Arrays.copyOf(tmp[i], C);
34+
}
35+
rotate(pi-1, pj, new int[]{1, 0, 3, 2});
36+
rotate(pi, pj, new int[]{1, 2, 3, 0});
37+
}
38+
39+
for (int i = 0; i < R; i++) {
40+
for (int j = 0; j < C; j++) {
41+
if (A[i][j] > 0) ans += A[i][j];
42+
}
43+
}
44+
System.out.println(ans);
45+
}
46+
47+
static void spread() {
48+
for (int i = 0; i < R; i++) {
49+
for (int j = 0; j < C; j++) {
50+
if (A[i][j] > 0) {
51+
int cnt = 0;
52+
for (int k = 0; k < 4; k++) {
53+
int ni = i + di[k], nj = j + dj[k];
54+
if (!isValidPath(ni, nj) || A[ni][nj] == -1) continue;
55+
tmp[ni][nj] += A[i][j]/5;
56+
cnt ++;
57+
}
58+
tmp[i][j] += A[i][j] - (A[i][j]/5) * cnt;
59+
}
60+
}
61+
}
62+
}
63+
64+
static void rotate(int i, int j, int[] d) {
65+
A[i][j] = -1;
66+
for (int k = 0; k < 4;) {
67+
if (!isValidPath(i+di[d[k]], j+dj[d[k]])) k++;
68+
int ni = i+di[d[k]], nj = j+dj[d[k]];
69+
if (A[ni][nj] == -1) return;
70+
A[ni][nj] = tmp[i][j];
71+
i = ni; j = nj;
72+
}
73+
}
74+
75+
static boolean isValidPath(int i, int j) {
76+
return 0 <= i && i < R && 0 <= j && j < C;
77+
}
78+
}

Diff for: โ€Žsrc/Simulation/P17144/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## [baekjoon-17144] ๋ฏธ์„ธ๋จผ์ง€ ์•ˆ๋…•!
2+
3+
![image](https://user-images.githubusercontent.com/22045163/114657665-85455480-9d2b-11eb-9f2b-5dd16189a1e2.png)
4+
![image](https://user-images.githubusercontent.com/22045163/114657691-91311680-9d2b-11eb-9f74-2f598bcc84dd.png)
5+
![image](https://user-images.githubusercontent.com/22045163/114657715-9db56f00-9d2b-11eb-84af-72bd3a025560.png)
6+
7+
![image](https://user-images.githubusercontent.com/22045163/114657752-ac038b00-9d2b-11eb-865f-c6ce722ca877.png)

Diff for: โ€Žsrc/Simulation/P17144/input.txt

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
7 8 50
2+
0 0 0 0 0 0 0 9
3+
0 0 0 0 3 0 0 8
4+
-1 0 5 0 0 0 22 0
5+
-1 8 0 0 0 0 0 0
6+
0 0 0 0 0 10 43 0
7+
0 0 5 0 15 0 0 0
8+
0 0 40 0 0 0 20 0

0 commit comments

Comments
ย (0)