From a97afaac6058487cfeda871d6bc99c8f6d78c3b0 Mon Sep 17 00:00:00 2001 From: in seong Park <74069492+Hexeong@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:12:12 +0900 Subject: [PATCH] =?UTF-8?q?[Week13]=20PGS=2042892:=20=EA=B8=B8=20=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=EA=B2=8C=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Hexeong.java" | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 "weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" diff --git "a/weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" "b/weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" new file mode 100644 index 0000000..d1f515e --- /dev/null +++ "b/weekly/week13/PGS_ 42892_\352\270\270\354\260\276\352\270\260\352\262\214\354\236\204/Hexeong.java" @@ -0,0 +1,70 @@ +import java.util.*; + +class Solution { + int[][] answer; + int idx; + + public int[][] solution(int[][] nodeinfo) { + int n = nodeinfo.length; + List nodes = new ArrayList<>(); + + for (int i = 0; i < n; i++) { + nodes.add(new Node(i + 1, nodeinfo[i][0], nodeinfo[i][1])); + } + + nodes.sort((a, b) -> { + if (a.y == b.y) return a.x - b.x; + return b.y - a.y; + }); + + Node root = nodes.get(0); + for (int i = 1; i < nodes.size(); i++) { + insertNode(root, nodes.get(i)); + } + + answer = new int[2][n]; + idx = 0; + preOrder(root); + idx = 0; + postOrder(root); + + return answer; + } + + private void insertNode(Node parent, Node child) { + if (child.x < parent.x) { + if (parent.left == null) parent.left = child; + else insertNode(parent.left, child); + } else { + if (parent.right == null) parent.right = child; + else insertNode(parent.right, child); + } + } + + // 전위 순회 + private void preOrder(Node node) { + if (node == null) return; + answer[0][idx++] = node.id; + preOrder(node.left); + preOrder(node.right); + } + + // 후위 순회 + private void postOrder(Node node) { + if (node == null) return; + postOrder(node.left); + postOrder(node.right); + answer[1][idx++] = node.id; + } + + class Node { + int id, x, y; + Node left, right; + + public Node(int id, int x, int y) { + this.id = id; + this.x = x; + this.y = y; + } + } +}