[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 181. Employees Earning More Than Their Managers

잰잰' 2025. 5. 9. 12:14
Table: Employee

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| salary      | int     |
| managerId   | int     |
+-------------+---------+

이 테이블에서 id는 기본 키(고유한 값이 있는 열)입니다.
이 테이블의 각 행은 직원의 ID, 이름, 급여, 그리고 그들의 관리자 ID를 나타냅니다.

 

문제

관리자보다 더 많은 급여를 받는 직원을 찾는 해결책을 작성하세요.

결과 테이블은 아무 순서로 반환해도 됩니다.

결과 형식은 다음 예시를 따르세요.

Example 1:

Input: 
Employee table:
+----+-------+--------+-----------+
| id | name  | salary | managerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | Null      |
| 4  | Max   | 90000  | Null      |
+----+-------+--------+-----------+
Output: 
+----------+
| Employee |
+----------+
| Joe      |
+----------+

설명 : Joe는 자신의 관리자보다 더 많은 급여를 받는 유일한 직원입니다.

 

✏️ 풀이

import pandas as pd

def find_employees(employee: pd.DataFrame) -> pd.DataFrame:
    df = pd.merge(employee, employee, how='left', left_on='managerId', right_on='id')

    return df[(df['salary_x'] > df['salary_y'])].rename(columns={'name_x':'Employee'})[['Employee']]

 

1. managerId, id 로 조인

2. 관리자 보다 많이 받는 직원 조회 salary_x > salary_y

3. name_x 컬럼명을 Employee로 변경