๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
๋ฆฌํธ์ฝ๋ Problems, https://leetcode.com/problemset/all/์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
https://leetcode.com/problems/tree-node/
Table : Tree
Each node in the tree can be one of three types:
- "Leaf": if the node is a leaf node.
- "Root": if the node is the root of the tree.
- "Inner": If the node is neither a leaf node nor a root node.
Write an SQL query to report the type of each node in the tree.
Return the result table in any order.
The query result format is in the following example.
Example 1:
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
id์ p_id ๊ด๊ณ์ ๋ฐ๋ผ id์ type์ ์ถ๋ ฅํด์ผ ํ๋ค.
โ p_id๊ฐ null์ด๋ฉด ํด๋น id๋ Root
โก p_id๊ฐ ์กด์ฌํ๊ณ ํด๋น id๊ฐ ๋๊ตฐ๊ฐ์ p_id๊ฐ ๋๋ค๋ฉด Inner
โข p_id๊ฐ ์กด์ฌํ๊ณ ํด๋น id๊ฐ ๋๊ตฐ๊ฐ์ p_id๊ฐ ๋์ง ์๋๋ค๋ฉด Leaf
p_id์ ์กด์ฌ ์ ๋ฌด์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ๋น๊ตํ๊ธฐ ์ํด Tree ํ ์ด๋ธ ๊ธฐ์ค์ผ๋ก left joinํ๋ค.
โป ์ค์ํ ๊ฒ์ ๊ณตํต ์ปฌ๋ผ์ ๊ธฐ์กด tree ํ ์ด๋ธ(T1)์ id์ ์กฐ์ธํ๋ tree ํ ์ด๋ธ(T2)์ p_id๋ฅผ ์กฐ์ธ ์กฐ๊ฑด์ผ๋ก ์ก๋ ๊ฒ.
์กฐ์ธํ๋ฉด ์์ ํ ์ด๋ธ์์๋ ์๋์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
T1 | T2 | ||
id | p_id | p_id | id |
1 | null | 1 | 3 |
1 | null | 1 | 2 |
2 | 1 | 2 | 5 |
2 | 1 | 2 | 4 |
3 | 1 | null | null |
4 | 2 | null | null |
5 | 2 | null | null |
์กฐ์ธ ํ โ , โก, โข์ CASE๋ฌธ์ ํ์ฉํด์ ์กฐ๊ฑด์ผ๋ก ์์ฐจ ์ ์ฉํด์ค๋ค.
SELECT DISTINCT T1.id AS id,
CASE WHEN T1.p_id is null THEN 'Root'
WHEN T2.id is not null THEN 'Inner'
ELSE 'Leaf'
END AS 'type'
FROM Tree T1
LEFT JOIN Tree T2
ON T1.id = T2.p_id
'Growth ๐ณ > Practice ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 1070. Product Sales Analysis III (0) | 2023.05.22 |
---|---|
[LeetCode] 1045. Customers Who Bought All Products (0) | 2023.05.18 |
[LeetCode] 602. Friend Requests II: Who Has the Most Friends (0) | 2023.05.12 |
[LeetCode] 601. Human Traffic of Stadium (0) | 2023.05.11 |
[LeetCode] 577. Employee Bonus (0) | 2023.05.10 |