홍동이의 성장일기

[Hacker Rank] Binary Tree Nodes / [LeetCode] 608. Tree Node 본문

Tool/SQL 코딩테스트 풀이

[Hacker Rank] Binary Tree Nodes / [LeetCode] 608. Tree Node

홍동2 2023. 10. 12. 01:37

 

Binary Tree Nodes | HackerRank

Write a query to find the node type of BST ordered by the value of the node.

www.hackerrank.com

 

풀이 1

SELECT N
        , CASE 
        	WHEN P IS NULL THEN 'Root' 
                WHEN N IN (SELECT P
                           FROM BST
                           GROUP BY P
                           HAVING count(P) = 2) THEN 'Inner'
                ELSE 'Leaf' 
          END
FROM BST
ORDER BY N

 

풀이 2

SELECT N
        , CASE 
        	WHEN P IS NULL THEN 'Root' 
            WHEN N IN (SELECT DISTINCT P 
            		FROM BST) THEN 'Inner'
            ELSE 'Leaf'
          END
FROM BST
ORDER BY N

 

💡 문제풀이

 

우리가 해결해야 하는 Binary Tree는 위와 같은 모양을 하고 있습니다.

 

예시로 주어진 표를 살펴보면 P가 null인 경우는 Root인 것을 알 수 있습니다. Inner인 N의 경우 P에서 두번씩 사용된다는 공통점을 발견했습니다.

 

SELECT P
        , count(P)
FROM BST
GROUP BY P

원하는대로 데이터가 뽑혀진 것 같습니다. 하지만 count(P)가 2인 값만 궁금하기 때문에 HAVING 조건을 걸어주었습니다.

 

 

 

 

 

 

 

 

 

 

SELECT P
        , count(P)
FROM BST
GROUP BY P
HAVING count(P) = 2

Inner인 N값을 찾았으니 해당 구문을 CASE WHEN절에서 서브쿼리로 사용해주면 됩니다.

 

 

 

 

 

 

 

 


📍본 내용은  '[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이'를  수강하며 작성한 내용입니다.

 


 

 

Tree Node - LeetCode

Can you solve this real interview question? Tree Node - Table: Tree +-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | p_id | int | +-------------+------+ id is the column with unique values for this table. Each row of this

leetcode.com

SELECT id
        , CASE
            WHEN p_id IS NULL THEN 'Root'
            WHEN id IN (SELECT p_id FROM tree) THEN 'Inner'
            ELSE 'Leaf'
          END as type
FROM tree

 

💡 문제풀이

 

p_id에 속해있는 id는 자식 노드를 가지고 있다는 뜻이기 때문에 'Inner'이 된다. 'Root'의 경우, id가 p_id에 속해있긴 하지만 CASE문 첫번째 조건에서 p_id가 NULL인 경우를 지정해주었기 때문에 제외시킬 수 있다. CASE 구문에 다중행 서브쿼리를 알맞게 사용해주면 해결할 수 있는 문제!

728x90

'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글

[HackerRank] Ollivander's Inventory  (0) 2023.10.12
[HackerRank] SQL Project Planning  (1) 2023.10.12
[HackerRank] Weather Observation Station 5  (0) 2023.10.02
[HackerRank] Occupations  (1) 2023.10.02
[HackerRank] New Companies  (0) 2023.09.30
Comments