안녕하세요, HELLO
오늘은 Leetcode 알고리즘 문제 '178. Rank Scores'에 대해서 살펴보고자 합니다.
알고리즘 문제, 코드, 해설 그리고 Leetcode에서 제공해준 solution 순서대로 정리하였습니다.
STEP 1. 'Rank Score' 알고리즘 문제
STEP 2. 'Rank Score' 코드(code)
STEP 3. 'Rank Score' 해설
STEP 4. 'Rank Score' solution
STEP 1. 'Rank Score' 알고리즘 문제
Write an SQL query to rank the scores. The ranking should be calculated according to the following rules:
- The scores should be ranked from the highest to the lowest.
- If there is a tie between two scores, both should have the same ranking.
- After a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no holes between ranks.
Return the result table ordered by score in descending order.
점수로 순위를 매기는 SQL 쿼리를 작성합니다. 순위는 다음 규칙에 따라 계산해야 합니다.
- 점수는 가장 높은 것부터 가장 낮은 것까지로 순위를 매겨야 합니다.
- 두 점수 사이에 동점이 있을 경우, 두 점수 모두 순위가 같아야 합니다.
- 동점이 된 후, 다음 순위 번호는 다음 연속 정수 값이어야 합니다. 서열 사이에 빈 정수 값이 없어야 합니다. 점수순으로 정렬된 결과표를 내림차순으로 반환합니다.
The query result format is in the following example.
STEP 2. 'Rank Score' 코드(code)
■ Runtime: Runtime: 236 ms, faster than 94.67% of MySQL online submissions for Rank Scores.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Rank Scores.
# Write your MySQL query statement below
SELECT score,
DENSE_RANK() over (ORDER BY score DESC) as 'rank'
FROM Scores
ORDER BY score DESC;
STEP 3. 'Rank Score' 해설
dense_rank 함수는 규칙에서 요구하는 "동점이 된 후, 다음 순위 번호는 다음 연속 정수 값이어야 합니다." 이 부분을 해결해주는 함수입니다. 반면에, rank 함수는 "동점인 경우, 누적으로 계산"되어 적합하지 않습니다.
STEP 4. 'Rank Score' solution
추가적으로, Leetcode에서 제공해준 solution 코드를 살펴보겠습니다.
■ Runtime: Runtime: 490 ms, faster than 34.12% of MySQL online submissions for Rank Scores.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Rank Scores.
SELECT S.Score, COUNT(S2.Score) as `Rank`
FROM Scores S,
(SELECT DISTINCT Score FROM Scores) S2
WHERE S.Score<=S2.Score
GROUP BY S.Id
ORDER BY S.Score DESC;
■ 마무리
오늘은 Leetcode 알고리즘 문제 '178. Rank Score'에 대해서 알아봤습니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
'PROGRAMMING > LeetCode' 카테고리의 다른 글
[Leetcode] 181. Employees Earning More Than Their Managers_해설, 풀이, 설명 (0) | 2022.09.12 |
---|---|
[Leetcode] 180. Consecutive Numbers_해설, 풀이, 설명 (0) | 2022.09.03 |
[Leetcode] 177. Nth Highest Salary_해설, 풀이, 설명 (3) | 2022.08.20 |
[Leetcode] 176. Second Highest Salary_해설, 풀이, 설명 (0) | 2022.08.15 |
[Leetcode] 175. Combine Two Tables_해설, 풀이, 설명 (0) | 2022.08.15 |
댓글