From 93c817cef57e44e95a1b04e9974dc4d414d4efc3 Mon Sep 17 00:00:00 2001 From: Jonghwan Lee <123362165+0224LJH@users.noreply.github.com> Date: Fri, 7 Nov 2025 21:19:22 +0900 Subject: [PATCH] =?UTF-8?q?[20251107]=20BOJ=20/=20G2=20/=20=EB=8F=99?= =?UTF-8?q?=EC=A0=84=20=EC=98=AE=EA=B8=B0=EA=B8=B0=20/=20=EC=9D=B4?= =?UTF-8?q?=EC=A2=85=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4 \354\230\256\352\270\260\352\270\260.md" | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 "0224LJH/202511/07 BOJ \353\217\231\354\240\204 \354\230\256\352\270\260\352\270\260.md" diff --git "a/0224LJH/202511/07 BOJ \353\217\231\354\240\204 \354\230\256\352\270\260\352\270\260.md" "b/0224LJH/202511/07 BOJ \353\217\231\354\240\204 \354\230\256\352\270\260\352\270\260.md" new file mode 100644 index 00000000..2e102c59 --- /dev/null +++ "b/0224LJH/202511/07 BOJ \353\217\231\354\240\204 \354\230\256\352\270\260\352\270\260.md" @@ -0,0 +1,104 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Queue; +import java.util.StringTokenizer; + +public class Main { + + static int len,idx1,idx2; + static boolean[][] dp; + static char[] arr,comp,move = new char[2]; + static char last = '1'; + static String ans; + static Queue arrQ = new LinkedList<>(); + static Queue fingerQ = new LinkedList<>(); + + public static void main(String[] args) throws IOException { + init(); + process(); + print(); + } + + private static void init() throws IOException{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in));; + len = Integer.parseInt(br.readLine()); + char[] temp = br.readLine().toCharArray(); + arr = br.readLine().toCharArray(); + + StringTokenizer st = new StringTokenizer(br.readLine()); + idx1 = Integer.parseInt(st.nextToken()); + idx2 = Integer.parseInt(st.nextToken()); + + int idx = 0; + int moveIdx = 0; + + comp = new char[len-2]; + + for (int i = 0; i < len; i++) { + if (i == idx1 || i == idx2) { + move[moveIdx++] = temp[i]; + } else { + comp[idx++] =temp[i]; + } + + } + dp = new boolean[len][3]; // dp[i][j] move j개쓰고 이곳에 도달가능? + + + } + + + private static void process() { + int idx = 0; + int mIdx = 0; + + + if (arr[0] != comp[0] && arr[0] != move[0]) { + ans = "NO"; + return; + } + + if (arr[0] == comp[0]) { + dp[0][0] = true; + } + if (arr[0] == move[0]) { + dp[0][1] = true; + } + + + for (int i = 1; i < len; i++) { + for (int j = 0; j < 3; j++) { + + if (!dp[i-1][j]) continue; + // 이제 비교 + + if (i-j < len-2) { + if (arr[i] == comp[i-j]) { + dp[i][j] = true; + } + } + + if (j!= 2 && arr[i] == move[j]) { + dp[i][j+1] = true; + } + } + } + + ans = dp[len-1][2]?"YES":"NO"; + } + + + + private static void print() { + System.out.println(ans); + } +} + + +```