From cabeb5ea9859090acd254c4d5e162eb8b7cbd0ab Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Thu, 27 Nov 2025 23:55:18 +0900 Subject: [PATCH] =?UTF-8?q?[20251127]=20BOJ=20/=20G2=20/=20=EC=82=AC?= =?UTF-8?q?=EA=B3=BC=EB=82=98=EB=AC=B4=20/=20=EC=9D=B4=EC=9D=B8=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\352\263\274\353\202\230\353\254\264.md" | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 "LiiNi-coder/202511/27 BOJ \354\202\254\352\263\274\353\202\230\353\254\264.md" diff --git "a/LiiNi-coder/202511/27 BOJ \354\202\254\352\263\274\353\202\230\353\254\264.md" "b/LiiNi-coder/202511/27 BOJ \354\202\254\352\263\274\353\202\230\353\254\264.md" new file mode 100644 index 00000000..9d0114ce --- /dev/null +++ "b/LiiNi-coder/202511/27 BOJ \354\202\254\352\263\274\353\202\230\353\254\264.md" @@ -0,0 +1,77 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class Main{ + private static int N; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + // 타겟 : x, y + // x1, 가 등장하면, x1까지의 stack에 모두 표식 + // y1, y2가 등장한다면 이제 stack에서 pop될때 표식 되있는것이라면 그것 출력 + + N = Integer.parseInt(br.readLine()); + + String arr = br.readLine(); + char[] cs = arr.toCharArray(); + String temp1 = br.readLine(); + String[] temp = temp1.split(" "); + int x = Integer.parseInt(temp[0]) - 1; + int y = Integer.parseInt(temp[1]) - 1; + Deque stack = new ArrayDeque<>(); + + int[][] indexesAtname = new int[N][2]; + + int name = 0; + boolean isFindMode = false; + int[] popElement = null; + + for(int i = 0; i < arr.length(); i++) { + char c = cs[i]; + if(c == '0'){ + // 넣기 + indexesAtname[name][0] = i; + stack.push(new int[]{name++, 0}); + }else{ + // 빼기 + popElement = stack.pop(); + indexesAtname[popElement[0]][1] = i; + } + } + name = 0; + for(int i = 0; i < arr.length(); i++){ + char c = cs[i]; + if(i == x){ + for(int[] element: stack){ + element[1] = 1; + } + }else if(i == y){ + isFindMode = true; + } + if(c == '0'){ + // 넣기 + indexesAtname[name][0] = i; + stack.push(new int[]{name++, 0}); + if(i == x){ + stack.peek()[1] = 1; + } + }else{ + // 빼기 + popElement = stack.pop(); + indexesAtname[popElement[0]][1] = i; + if(isFindMode && popElement[1] == 1) + break; + } + } + + StringBuilder sb = new StringBuilder(); + sb.append(indexesAtname[popElement[0]][0] + 1); + sb.append(" "); + sb.append(indexesAtname[popElement[0]][1] + 1); + System.out.println(sb.toString()); + br.close(); + } +} +```