Skip to content

Commit 59ca992

Browse files
authored
[20250718] BOJ / G5 / 톱니바퀴 / 이준희
1 parent f69c63b commit 59ca992

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.InputStreamReader;
4+
import java.util.*;
5+
6+
public class Main {
7+
8+
static List<Deque<Integer>> wheel = new ArrayList<>();
9+
10+
public static void rotate(int idx, int dir) {
11+
if (dir == 1) {
12+
int last = wheel.get(idx).pollLast();
13+
wheel.get(idx).addFirst(last);
14+
} else {
15+
int first = wheel.get(idx).pollFirst();
16+
wheel.get(idx).addLast(first);
17+
}
18+
}
19+
20+
public static void main(String[] args) throws Exception {
21+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
22+
StringTokenizer st;
23+
24+
for (int i = 0; i < 4; i++) {
25+
String line = br.readLine();
26+
Deque<Integer> dq = new LinkedList<>();
27+
for (char c : line.toCharArray()) {
28+
dq.add(c - '0');
29+
}
30+
wheel.add(dq);
31+
}
32+
33+
int k = Integer.parseInt(br.readLine());
34+
35+
for (int i = 0; i < k; i++) {
36+
st = new StringTokenizer(br.readLine());
37+
int num = Integer.parseInt(st.nextToken()) - 1;
38+
int dir = Integer.parseInt(st.nextToken());
39+
40+
int[] dirs = new int[4];
41+
dirs[num] = dir;
42+
43+
// 왼쪽
44+
for (int j = num; j > 0; j--) {
45+
int left = ((LinkedList<Integer>) wheel.get(j - 1)).get(2);
46+
int right = ((LinkedList<Integer>) wheel.get(j)).get(6);
47+
if (left != right) {
48+
dirs[j - 1] = -dirs[j];
49+
} else {
50+
break;
51+
}
52+
}
53+
54+
// 오른쪽
55+
for (int j = num; j < 3; j++) {
56+
int left = ((LinkedList<Integer>) wheel.get(j)).get(2);
57+
int right = ((LinkedList<Integer>) wheel.get(j + 1)).get(6);
58+
if (left != right) {
59+
dirs[j + 1] = -dirs[j];
60+
} else {
61+
break;
62+
}
63+
}
64+
65+
for (int j = 0; j < 4; j++) {
66+
if (dirs[j] != 0) {
67+
rotate(j, dirs[j]);
68+
}
69+
}
70+
}
71+
72+
int score = 0;
73+
for (int i = 0; i < 4; i++) {
74+
if (wheel.get(i).peekFirst() == 1) {
75+
score += (1 << i);
76+
}
77+
}
78+
System.out.println(score);
79+
}
80+
}
81+
82+
```

0 commit comments

Comments
 (0)