From 59ca9929ac40879276570371739ccce45dee20c0 Mon Sep 17 00:00:00 2001 From: JHLEE325 <82587652+JHLEE325@users.noreply.github.com> Date: Fri, 18 Jul 2025 09:44:14 +0900 Subject: [PATCH] =?UTF-8?q?[20250718]=20BOJ=20/=20G5=20/=20=ED=86=B1?= =?UTF-8?q?=EB=8B=88=EB=B0=94=ED=80=B4=20/=20=EC=9D=B4=EC=A4=80=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...61\353\213\210\353\260\224\355\200\264.md" | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 "JHLEE325/202507/18 BOJ G5 \355\206\261\353\213\210\353\260\224\355\200\264.md" diff --git "a/JHLEE325/202507/18 BOJ G5 \355\206\261\353\213\210\353\260\224\355\200\264.md" "b/JHLEE325/202507/18 BOJ G5 \355\206\261\353\213\210\353\260\224\355\200\264.md" new file mode 100644 index 00000000..c1cac790 --- /dev/null +++ "b/JHLEE325/202507/18 BOJ G5 \355\206\261\353\213\210\353\260\224\355\200\264.md" @@ -0,0 +1,82 @@ +```java +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.*; + +public class Main { + + static List> wheel = new ArrayList<>(); + + public static void rotate(int idx, int dir) { + if (dir == 1) { + int last = wheel.get(idx).pollLast(); + wheel.get(idx).addFirst(last); + } else { + int first = wheel.get(idx).pollFirst(); + wheel.get(idx).addLast(first); + } + } + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + for (int i = 0; i < 4; i++) { + String line = br.readLine(); + Deque dq = new LinkedList<>(); + for (char c : line.toCharArray()) { + dq.add(c - '0'); + } + wheel.add(dq); + } + + int k = Integer.parseInt(br.readLine()); + + for (int i = 0; i < k; i++) { + st = new StringTokenizer(br.readLine()); + int num = Integer.parseInt(st.nextToken()) - 1; + int dir = Integer.parseInt(st.nextToken()); + + int[] dirs = new int[4]; + dirs[num] = dir; + + // 왼쪽 + for (int j = num; j > 0; j--) { + int left = ((LinkedList) wheel.get(j - 1)).get(2); + int right = ((LinkedList) wheel.get(j)).get(6); + if (left != right) { + dirs[j - 1] = -dirs[j]; + } else { + break; + } + } + + // 오른쪽 + for (int j = num; j < 3; j++) { + int left = ((LinkedList) wheel.get(j)).get(2); + int right = ((LinkedList) wheel.get(j + 1)).get(6); + if (left != right) { + dirs[j + 1] = -dirs[j]; + } else { + break; + } + } + + for (int j = 0; j < 4; j++) { + if (dirs[j] != 0) { + rotate(j, dirs[j]); + } + } + } + + int score = 0; + for (int i = 0; i < 4; i++) { + if (wheel.get(i).peekFirst() == 1) { + score += (1 << i); + } + } + System.out.println(score); + } +} + +```