DIFFICULTY는 Medium으로 고정해두고, SKILL을 높여서 Intermediate 단계를 풀어보려고 한다.
실제로 문제에서는 Advanced 단계의 문제까지 나올 것으로 예상되서 부지런하게 감을 익혀야겠다.
그리고 인사담당자에게 물어봤을 때, 함수 사용 방법 등 간단한 구글링은 가능하다고 했다.
그치만 시간을 아낄 수 있다면 가장 좋으니!!
사용하면서 함수에 대한 정보를 미리 정리해서 프린트 해둘까 싶다.
문제
DIFFICULTY : Medium, SKILL : Intermediate, MySQL
You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N. |
Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node: Root: If node is root node. Leaf: If node is leaf node. Inner: If node is neither root nor leaf node. 문제해석 1) 아래 조건을 적용해서 Node값을 판별해보자. - Root는 P값을 가지지 않을 것이다. - Leaf는 child 값을 가지지 않기 때문에, P에는 없는 값일 것이다. - Inner는 Root도 아니고, Leaf도 아닌 값이다. |
INPUT 테이블
OUTPUT 결과 샘플
SQL CODE
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 AS NODE
FROM BST
ORDER BY N ASC
;
SQL 결과
1 Leaf
2 Inner
3 Leaf
4 Inner
5 Leaf
6 Inner
7 Leaf
8 Leaf
9 Inner
10 Leaf
11 Inner
12 Leaf
13 Inner
14 Leaf
15 Root
느낀점/개선점
추가 조사 | 1. Binary Tree Nodes 이진 트리 노드는 이진 트리의 기본 구성 요소이다. 이진 트리는 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조이다. 2. Node 개념 Root : 부모노드가 없는 경우 Leaf : 자식노드가 없는 경우 Inner : Root도 아니고, Leaf도 아닌 경우 |
느낀점 | 미리 문제 예습을 통해 이 개념을 접하게 되어서 다행이다. 알고 있는 명령문으로 해결이 가능한데, 제한된 시간 내에 이 문제를 처음 접하게 된다면 우왕좌왕 했을 것 같다. |
개선점 | - |