cs

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

 

Ollivander's Inventory | HackerRank

Help pick out Ron's new wand.

www.hackerrank.com

Harry Potter and his friends are at Ollivander's with Ron, finally replacing Charlie's old broken wand.

Hermione decides the best way to choose is by determining the minimum number of gold galleons needed to buy each non-evil wand of high power and age. Write a query to print the id, age, coins_needed, and power of the wands that Ron's interested in, sorted in order of descending power. If more than one wand has same power, sort the result in order of descending age.

Input Format

The following tables contain data on the wands in Ollivander's inventory:

  • Wands: The id is the id of the wand, code is the code of the wand, coins_needed is the total number of gold galleons needed to buy the wand, and power denotes the quality of the wand (the higher the power, the better the wand is).

 

  • Wands_Property: The code is the code of the wand, age is the age of the wand, and is_evil denotes whether the wand is good for the dark arts. If the value of is_evil is 0, it means that the wand is not evil. The mapping between code and age is one-one, meaning that if there are two pairs, (code_1, age_1) and (code_2, age_2), then code_1 ≠ age_1 and code_2 ≠ age_2

 

 

Sample Input

Wands Table
Wands_Property  Table 

Sample Output

9 45 1647 10
12 17 9897 10
1 20 3688 8
15 40 6018 7
19 20 7651 6
11 40 7587 5
10 20 504 5
18 40 3312 3
20 17 5689 3
5 45 6020 2
14 40 5408 1

 

Explanation은 제외했음


[My Answer]

SELECT 
A.id, B.age, A.coins_needed, A.power
FROM Wands A
inner join 
Wands_Property B
on A.code = B.code
WHERE A.coins_needed = (select min(coins_needed)
                        from Wands A2 
                        inner join Wands_Property B2 
                        on A2.code = B2.code 
                        where B2.is_evil = 0 
                        and B.age = B2.age 
                        and A.power = A2.power)
ORDER BY A.power desc, B.age desc;

오랜만에 해리포터...

암튼 Where절 뒤에 select문은 잘 안쓰는데, 이렇게 하는 방식이 아니면 잘 생각이 나질 않았따.. 

최대한 싸게 사야하는 거니까 테이블 하나 다시 만들어주고 거기서 미니멈값만 추출.

'Code Problems > SQL_ HackerRank' 카테고리의 다른 글

[Hacker Rank] Top Competitors  (0) 2022.02.23
[Hacker Rank] The Report  (0) 2022.02.06
[Hacker Rank] Symmetric Pairs  (0) 2022.01.24
[Hacker Rank] Placement  (0) 2022.01.24
[HackerRank] Average Population of Each Continent  (0) 2022.01.04

+ Recent posts