From 928f1ba6359e2680987a2fddc84f935b68ffc253 Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Fri, 5 Sep 2025 23:51:53 +0900 Subject: [PATCH] =?UTF-8?q?[20250905]=20BOJ=20/=20G5=20/=20=EC=86=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=20=EC=88=98=EC=97=B4=20/=20=EC=9D=B4?= =?UTF-8?q?=EC=9D=B8=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\235\264 \354\210\230\354\227\264.md" | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 "LiiNi-coder/202509/05 BOJ \354\206\234 \354\202\254\354\235\264 \354\210\230\354\227\264.md" diff --git "a/LiiNi-coder/202509/05 BOJ \354\206\234 \354\202\254\354\235\264 \354\210\230\354\227\264.md" "b/LiiNi-coder/202509/05 BOJ \354\206\234 \354\202\254\354\235\264 \354\210\230\354\227\264.md" new file mode 100644 index 00000000..31d2d21d --- /dev/null +++ "b/LiiNi-coder/202509/05 BOJ \354\206\234 \354\202\254\354\235\264 \354\210\230\354\227\264.md" @@ -0,0 +1,72 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class Main { + private static BufferedReader br; + private static int N; + private static int[] X; + private static int[] answer; + private static boolean[] used; + private static boolean found; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + X = new int[N]; + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int i = 0; i < N; i++) { + X[i] = Integer.parseInt(st.nextToken()); + } + Arrays.sort(X); + answer = new int[2 * N]; + Arrays.fill(answer, -1); + used = new boolean[N]; + + backtrack(0); + + if (!found) { + System.out.println(-1); + } + } + + private static void backtrack(int idx) { + if (found) + return; + + + if (idx == 2 * N) { + StringBuilder sb = new StringBuilder(); + for (int v : answer) sb.append(v).append(' '); + System.out.println(sb.toString()); + found = true; + return; + } + if (answer[idx] != -1) { + backtrack(idx + 1); + return; + } + + for (int i = 0; i < N; i++) { + if (used[i]) + continue; + int val = X[i]; + int secIdx = idx + val + 1; + if (secIdx >= 2 * N || answer[secIdx] != -1) continue; + + answer[idx] = val; + answer[secIdx] = val; + used[i] = true; + + backtrack(idx + 1); + + answer[idx] = -1; + answer[secIdx] = -1; + used[i] = false; + } + } +} +```