Algorithm/leetCode

[세무민의 코딩일기] LeetCode Nth Highest Salary 문제풀이

세기루민 2022. 1. 8. 10:00
728x90

오늘 포스팅 할 내용은 LeetCode에 있는 Nth Highest Salary 문제를 풀어봤습니다.


1. 문제 설명


2. 문제 및 예시 


3. 문제 풀이

이번 문제는 해석하면 N이라는 특정 값을 입력했을 때 해당 순위의 Salary를 출력하고 없는 경우라면 Null을 출력하는

문제이다.

또한 이번 문제는 N을 입력을 해주기 때문에 DB Function을 이용한 문제라는 것도 알아야 한다. 

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
    SELECT distinct salary
    FROM (SELECT id, salary, 
          dense_rank() over(order by salary desc) as totals
          from Employee
         ) duals
    where duals.totals = N 
      
  );
END

제가 푼 방법은 위와 같습니다. 

우선 dense_rank는 Rank처럼 등수를 나열해주지만 동일한 값이 존재하는 경우 중복 순위를 나열해줍니다.

일단 N을 입력을 받았을 때 해당 N이라는 값이 존재하는지 확인하고 존재한다면 나열된 등수에 따른 Salary를

출력해주면 되기 때문에 위와 같이 작성했고 중복값인 경우 출력이 2개 되기 때문에 Distinct를 이용하여

1개의 값만 출력해주면 됩니다. 


4. 결과 

정답입니다. 

 

[GitHub]

자세한 코드는 아래의 github에 업로드해놨습니다!

 

GitHub - sg-moomin/programmersStudy

Contribute to sg-moomin/programmersStudy development by creating an account on GitHub.

github.com


이번 포스팅에서는 LeetCode에 있는 문제를 풀어봤습니다.

다음 포스팅에서도 더 유익한 정보로 찾아오겠습니다.

728x90