From 7c61f1a14c93625045f671055cf231271ba2377a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A7=84?= Date: Mon, 8 Sep 2025 17:36:29 +0900 Subject: [PATCH] =?UTF-8?q?[20250908]=20BOJ=20/=20G3=20/=20=EA=B0=9C?= =?UTF-8?q?=EB=AF=B8=EA=B5=B4=20/=20=EA=B9=80=EB=AF=BC=EC=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3 \352\260\234\353\257\270\352\265\264.md" | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 "zinnnn37/202509/8 BOJ G3 \352\260\234\353\257\270\352\265\264.md" diff --git "a/zinnnn37/202509/8 BOJ G3 \352\260\234\353\257\270\352\265\264.md" "b/zinnnn37/202509/8 BOJ G3 \352\260\234\353\257\270\352\265\264.md" new file mode 100644 index 00000000..ff4bd8ee --- /dev/null +++ "b/zinnnn37/202509/8 BOJ G3 \352\260\234\353\257\270\352\265\264.md" @@ -0,0 +1,96 @@ +```java +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TreeMap; + +public class BJ_14725_개미굴 { + + private static final String edge = "--"; + + private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + private static final StringBuilder sb = new StringBuilder(); + private static StringTokenizer st; + + private static int N; + private static Trie trie; + + private static class Trie { + TrieNode root; + + Trie() { + root = new TrieNode(); + } + + public void insert(String[] words, int length) { + TrieNode node = root; + + for (int i = 0; i < length; i++) { + node.children.putIfAbsent(words[i], new TrieNode()); + node = node.children.get(words[i]); + } + } + + public void print() { + for (String food : root.children.keySet()) { + _print(root.children.get(food), food, 0); + } + } + + private void _print(TrieNode cur, String food, int level) { + for (int i = 0; i < level; i++) { + sb.append("--"); + } + sb.append(food).append("\n"); + + for (String nextFood : cur.children.keySet()) { + _print(cur.children.get(nextFood), nextFood, level + 1); + } + } + } + + private static class TrieNode { + Map children; + + TrieNode() { + children = new TreeMap<>(); + } + } + + public static void main(String[] args) throws IOException { + init(); + sol(); + } + + private static void init() throws IOException { + N = Integer.parseInt(br.readLine()); + trie = new Trie(); + + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + + int K = Integer.parseInt(st.nextToken()); + String[] words = new String[K]; + for (int j = 0; j < K; j++) { + words[j] = st.nextToken(); + } + trie.insert(words, K); + } + } + + private static void sol() throws IOException { + trie.print(); + + bw.write(sb.toString()); + bw.flush(); + bw.close(); + br.close(); + } + +} +``` \ No newline at end of file