728x90
반응형
Ollivander's Inventory | HackerRank
Help pick out Ron's new wand.
www.hackerrank.com
문제





문제 접근 방식
문제에서 말한 조건은 다음과 같다
- EVIL이 아닌 지팡이
- POWER 기준 내림차순, 같은 POWER일 경우 AGE 기준 내림차순
- 지팡이 구입 시 최소한의 필요 코인 출력
1) EVIL이 아닌 지팡이
→ WHERE 조건절 활용
2) POWER 기준 내림차순, 같은 POWER일 경우 AGE 기준 내림차순
→ ORDER BY 절 활용
3) 지팡이 구입 시 최소한의 필요 코인 출력
→ 조인절을 활용해서, (POWER, AGE) 기준으로 COINS_NEEDED의 최솟값을 구한 다음, 기존 테이블과 조인하여
조인 조건절에 COINS_NEEDED와 최솟값이 같다는 조건을 추가하면 된다.
사실 여기서 가장 애먹었는데, 나는 MIN() OVER() 함수를 활용하여 COINS_NEEDED의 최솟값을 구하려고 했으나, 현 해커랭크 버전에서 이 윈도우 함수를 지원하지 않아서 다른 방식으로 쿼리를 작성함!
SELECT A1.ID
, A2.AGE
, A1.COINS_NEEDED
, A1.POWER
FROM WANDS A1
INNER JOIN WANDS_PROPERTY A2
ON A1.CODE = A2.CODE
INNER JOIN (
SELECT B1.POWER, B2.AGE, MIN(B1.COINS_NEEDED) AS MIN_COINS
FROM WANDS B1
INNER JOIN WANDS_PROPERTY B2
ON B1.CODE = B2.CODE
WHERE B2.IS_EVIL = 0
GROUP BY B1.POWER, B2.AGE
) A3
ON A1.POWER = A3.POWER
AND A2.AGE = A3.AGE
AND A1.COINS_NEEDED = A3.MIN_COINS
WHERE A2.IS_EVIL = 0
ORDER BY A1.POWER DESC, A2.AGE DESC
;728x90
반응형
'코딩 테스트 > MySQL' 카테고리의 다른 글
| [HackerRank] Challenges (2) | 2025.08.05 |
|---|---|
| [HackerRank] The PADS (2) | 2025.07.30 |
| [HackerRank] Top Competitors (2) | 2025.07.28 |
| [HackerRank] The Report (0) | 2025.07.25 |
| [HackerRank] Weather Observation Station 20 (0) | 2025.07.24 |