Skip to content

Commit 69be52a

Browse files
authored
Merge pull request #1182 from AlgorithmWithGod/JHLEE325
[20251021] BOJ / G4 / 주사위 굴리기 / 이준희
2 parents 31e4ed8 + 149df7a commit 69be52a

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
7+
static int n, m, x, y, k;
8+
static int[][] map;
9+
static int[] dx = {0, 0, 0, -1, 1}; // 동 서 북 남
10+
static int[] dy = {0, 1, -1, 0, 0};
11+
static int[] dice = {0, 0, 0, 0, 0, 0}; // 상 하 동 서 북 남
12+
13+
public static void main(String[] args) throws IOException {
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
n = Integer.parseInt(st.nextToken());
18+
m = Integer.parseInt(st.nextToken());
19+
x = Integer.parseInt(st.nextToken());
20+
y = Integer.parseInt(st.nextToken());
21+
k = Integer.parseInt(st.nextToken());
22+
23+
map = new int[n][m];
24+
25+
for (int i = 0; i < n; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
for (int j = 0; j < m; j++) {
28+
map[i][j] = Integer.parseInt(st.nextToken());
29+
}
30+
}
31+
32+
st = new StringTokenizer(br.readLine());
33+
StringBuilder sb = new StringBuilder();
34+
for (int i = 0; i < k; i++) {
35+
int op = Integer.parseInt(st.nextToken());
36+
int nx = x + dx[op];
37+
int ny = y + dy[op];
38+
39+
if (nx >= n || nx < 0 || ny >= m || ny < 0)
40+
continue;
41+
42+
x = nx;
43+
y = ny;
44+
45+
switch (op) {
46+
case 1:
47+
move_1();
48+
copy(nx, ny);
49+
sb.append(dice[0]).append("\n");
50+
break;
51+
case 2:
52+
move_2();
53+
copy(nx, ny);
54+
sb.append(dice[0]).append("\n");
55+
break;
56+
case 3:
57+
move_3();
58+
copy(nx, ny);
59+
sb.append(dice[0]).append("\n");
60+
break;
61+
case 4:
62+
move_4();
63+
copy(nx, ny);
64+
sb.append(dice[0]).append("\n");
65+
break;
66+
}
67+
}
68+
System.out.println(sb.toString());
69+
}
70+
71+
static void move_1() {
72+
int temp = dice[0];
73+
dice[0] = dice[3];
74+
dice[3] = dice[1];
75+
dice[1] = dice[2];
76+
dice[2] = temp;
77+
}
78+
79+
static void move_2() {
80+
int temp = dice[0];
81+
dice[0] = dice[2];
82+
dice[2] = dice[1];
83+
dice[1] = dice[3];
84+
dice[3] = temp;
85+
}
86+
87+
static void move_3() {
88+
int temp = dice[0];
89+
dice[0] = dice[5];
90+
dice[5] = dice[1];
91+
dice[1] = dice[4];
92+
dice[4] = temp;
93+
}
94+
95+
static void move_4() {
96+
int temp = dice[0];
97+
dice[0] = dice[4];
98+
dice[4] = dice[1];
99+
dice[1] = dice[5];
100+
dice[5] = temp;
101+
}
102+
103+
static void copy(int cx, int cy) {
104+
if (map[cx][cy] == 0) {
105+
map[cx][cy] = dice[1];
106+
} else {
107+
dice[1] = map[cx][cy];
108+
map[cx][cy] = 0;
109+
}
110+
}
111+
}
112+
```

0 commit comments

Comments
 (0)