-
해커랭크 Ollivander's Inventory (복합 조건 JOIN)Programing Language/SQL 2025. 6. 16. 13:10반응형
https://www.hackerrank.com/challenges/binary-search-tree-1/problem
Binary Tree Nodes | HackerRank
Write a query to find the node type of BST ordered by the value of the node.
www.hackerrank.com
해리 포터와 그의 친구들은 론과 함께 올리밴더네에 가서 마침내 찰리의 낡은 부러진 지팡이를 교체합니다.
헤르미온느는 각 지팡이의 능력치와 연령이 높은 일반 지팡이 를 구매하는 데 필요한 최소 골드 갈레온 수를 계산하는 것이 최선의 선택이라고 생각합니다 . 론이 관심 있는 지팡이의 ID , 연령 , 필요 동전 , 그리고 능력을 출력하는 쿼리를 작성하세요 . 두 개 이상의 지팡이가 동일한 능력을 가지고 있으면 결과를 연령을 기준으로 내림차순 으로 정렬 하세요 .
문제 접근
- 지팡이의 ID , 연령 , 필요 동전 , 능력 출력
- 조건
- 능력치와 연령이 높은 일반 지팡이 : 최소 골드 갈레온 수 계산
- non-evil
- 정렬 : 능력치 내림차순, 연령 내림차순
- 단계적 cte
- mysql 버전 문제로 cte, 윈도우 함수 사용 불가하여 단일 버전 진행
- non-evil code의 최소한의 금액 구하기
- code별로 최소한 금액 inner join 하기
/* -- 지팡이의 ID , 연령 , 필요 동전 , 능력 출력 -- 조건 -- 능력치, 연령 기준 가장 싼 지팡이 -- non-evil -- 정렬 : 능력치 내림차순, 연령 내림차순 -- 테이블 -- Wands : id, code, coins_needed, power -- wnads_property : code, age, is_evil */ -- ver1. 윈도우 함수 버전 : mysql 버전 문제 생김... -- row_number, min 활용 with min_code as ( select d.id, d.code, p.age, d.coins_needed, d.power , row_number() over(partition by p.age, d.power order by d.coins_needed asc) rn , min(coins_needed) over(partition by p.age, d.power) min_coins_needed from Wands d inner join Wands_Property p on d.code = p.code where p.is_evil = 0 ) select id, age, coins_needed, power from min_code -- where rn = 1 where coins_needed = min_coins_needed order by power desc, age desc ; -- ver2. mysql join 버전 select w.id, wp.age, w.coins_needed, w.power FROM Wands w INNER JOIN Wands_Property wp ON w.code = wp.code inner join ( SELECT w2.power, wp2.age , min(coins_needed) min_coins_needed FROM Wands w2 INNER JOIN Wands_Property wp2 ON w2.code = wp2.code WHERE wp2.is_evil = 0 group by w2.power, wp2.age ) c on wp.age = c.age and w.power = c.power and w.coins_needed = c.min_coins_needed where wp.is_evil = 0 ORDER BY w.power DESC, wp.age DESC ;반응형'Programing Language > SQL' 카테고리의 다른 글
해커랭크 SQL Project Planning (연속 날짜, GAP 분석) (0) 2025.06.16 해커랭크 Symmetric Pairs (셀프 JOIN, 조건) (0) 2025.06.16 해커랭크 Binary Tree Nodes (CASE, 서브쿼리) (0) 2025.06.16 해커랭크 Weather Observation Station 20 (중앙값, 윈도우 함수) (0) 2025.06.16 해커랭크 Placements (JOIN, 서브쿼리) (1) 2025.06.15