문제 사이트
아래 문제는 해커랭크에서 추출해온 문제입니다. 문제의 저작권은 해커랭크에 있으며 문제를 풀어보시려면 아래 링크를 클릭해주세요 🙂
Binary Tree Nodes | HackerRank
Write a query to find the node type of BST ordered by the value of the node.
www.hackerrank.com
👉문제 설명



- 트리의 노드 타입을 나누는 문제
👉문제 풀이
전체적인 구조를 잘 파악하는게 중요한 문제, IN에 대해서도 알고 있어야 문제를 쉽게 풀 수 있다
전체적인 로직
1) P가 Null -> Root
2) N이 P에 포함되지 않으면 -> Leaf
3) 그 이외 -> Inner
👉문제 풀이 과정
1. 노드타입별로 분류, CASE문 활용
case when p is null then 'Root'
when N NOT IN (select DISTINCT P from BST where p is not null) then 'Leaf'
else 'Inner' end
- 조건에 따라 노드 타입을 분류하여야 하므로 CASE문 사용
- P에 N이 포함되어 있는지를 확인하기 위해 서브쿼리를 통해 P를 select 하고 IN절 사용
- IN절은 리스트/목록에 찾으려는 데이터가 있는지 확인하는 용도
- DISTINCT : 중복없이 값 추출
👉최종 답안
select N,
(case when p is null then 'Root'
when N NOT IN (select DISTINCT P from BST where p is not null) then 'Leaf'
else 'Inner' end)
from BST
order by N
- 최종 결과값을 보면 1~9까지 정렬되어 있어 order by를 사용하였음
👉고찰
처음에 전체적인 로직은 쉽게 알 수 있었지만 이걸 코드로 구현하는 과정에 생각이 많았다
IN과 서브쿼리를 통해 비교적 쉽게 할 수 있었지만 도출해내는 과정까지가 오래 걸렸당,,
IN절에 대해서도 공부를 더 해야겠다는 생각
'SQL > MySQL' 카테고리의 다른 글
[MySQL] HackerRank - Weather Observation Station 6 문제 풀이 (0) | 2025.01.31 |
---|---|
[MySQL] HackerRank - Type of Triangle 문제 풀이 / CASE WHEN (0) | 2024.10.18 |
[MySQL] HackerRank - Occupations 문제 풀이 (0) | 2024.08.30 |
[MySQL] HackerRank - The PADS 문제 풀이 (0) | 2024.08.29 |
[MySQL] HackerRank - Contest Leaderboard 문제 풀이 (3) | 2024.08.28 |