안녕하세요, HELLO
오늘은 Leetcode 알고리즘 문제 '177. Nth Highest Salary'에 대해서 살펴보고자 합니다.
알고리즘 문제, 코드, 해설 그리고 Leetcode에서 제공해준 solution 순서대로 정리하였습니다.
STEP 1. 'Nth Highest Salary' 알고리즘 문제
STEP 2. 'Nth Highest Salary' 코드(code)
STEP 3. 'Nth Highest Salary' 해설
STEP 4. 'Nth Highest Salary' solution
STEP 1. 'Nth Highest Salary' 알고리즘 문제
Write an SQL query to report the nth highest salary from the Employee table. If there is no nth highest salary, the query should report null.
Employee 테이블에서 n번째로 큰 급여를 반환하는 query를 작성하면 됩니다. 만약에 n번째로 큰 급여 정보가 없다면, NULL을 반환합니다.
The query result format is in the following example.
STEP 2. 'Nth Highest Salary' 코드(code)
■ Runtime: Runtime: 328 ms, faster than 82.22% of MySQL online submissions for Nth Highest Salary.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Nth Highest Salary.
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M = N-1;
RETURN (
# Write your MySQL query statement below.
SELECT DISTINCT salary
# When not using DISTINCT can't cover NULL case
FROM Employee
ORDER BY salary DESC
LIMIT M, 1
# Why not using N-1 instead of declaring M
# Leetcode version can't support it
);
END
STEP 3. 'Nth Highest Salary' 해설
새로운 변수 N-1인 M을 선언하는 이유는, discussion에서 확인한 결과 leetcode 버전 문제로 N-1을 바로 실행할 경우 error가 발생하기 때문입니다. 그래서 DECLARE M INT 그리고 SET M = N-1을 선언합니다.
그리고 SELECT DISTINCT salary인 이유는 문제에서 "If there is no nth highest salary, the query should report null."를 충족하기 위해서 설정합니다.
STEP 4. 'Nth Highest Salary' solution
추가적으로, Leetcode에서 제공해준 solution 코드를 살펴보겠습니다.
■ Runtime: Runtime: 538 ms, faster than 42.39% of MySQL online submissions for Nth Highest Salary.
■ Memory Usage: Memory Usage: 0B, less than 100.00% of MySQL online submissions for Nth Highest Salary.
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N=N-1;
RETURN (
SELECT DISTINCT salary FROM Employee ORDER BY salary DESC
LIMIT 1 OFFSET N
);
END
■ 마무리
오늘은 Leetcode 알고리즘 문제 '177. Nth Highest Salary'에 대해서 알아봤습니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
'PROGRAMMING > LeetCode' 카테고리의 다른 글
[Leetcode] 180. Consecutive Numbers_해설, 풀이, 설명 (0) | 2022.09.03 |
---|---|
[Leetcode] 178. Rank Scores_해설, 풀이, 설명 (0) | 2022.08.21 |
[Leetcode] 176. Second Highest Salary_해설, 풀이, 설명 (0) | 2022.08.15 |
[Leetcode] 175. Combine Two Tables_해설, 풀이, 설명 (0) | 2022.08.15 |
[Leetcode] 22. Generate Parentheses_해설, 풀이, 설명 (0) | 2022.07.03 |
댓글