Allen's 데이터 맛집

HackerRank lv. Medium : Ollivander's Inventory 본문

SQL/SQL 문제풀이

HackerRank lv. Medium : Ollivander's Inventory

Allen93 2024. 5. 23. 18:01

문제

 

 

풀이

SELECT 
    w.id,
    p.age,
    w.coins_needed,
    w.power 
FROM Wands AS w 
    JOIN Wands_Property AS p ON (w.code = p.code) 
WHERE 
    p.is_evil = 0 AND w.coins_needed = 
    (SELECT MIN(coins_needed) 
     FROM Wands AS w1 JOIN Wands_Property AS p1 ON (w1.code = p1.code)
     WHERE w1.power = w.power AND p1.age = p.age
    ) 
ORDER BY 
    w.power DESC, p.age DESC

 

 


1. FROM 절과 JOIN 사용: Wands 테이블과 Wands_Property 테이블을 조인하여 마법 지팡이의 속성과 가격 정보를 결합합니다.

 

2. WHERE 절 조건: 악하지 않은(p.is_evil = 0) 마법 지팡이 중에서 각 지팡이의 파워와 나이에 따른 최소 동전 수를 필요로 하는 지팡이만을 선택합니다.


3. 서브쿼리를 사용한 최소값 필터링: 각 지팡이의 파워와 나이 조합에 대해 필요한 최소 동전 수(coins_needed)를 찾아서, 해당하는 지팡이만을 결과에 포함시킵니다.


4. ORDER BY 절: 파워(power)에 대해 내림차순으로 정렬하고, 파워가 같을 경우 나이(age)에 대해 내림차순으로 정렬하여 출력합니다.


 

https://www.hackerrank.com/challenges/harry-potter-and-wands/problem?isFullScreen=false

 

Ollivander's Inventory | HackerRank

Help pick out Ron's new wand.

www.hackerrank.com