[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 596. Classes More Than 5 Students

잰잰' 2025. 4. 29. 16:22
Table: Courses

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| student     | varchar |
| class       | varchar |
+-------------+---------+

(student, class)는 이 테이블의 기본 키입니다 (고유한 값을 가지는 열들의 조합).
이 테이블의 각 행은 학생의 이름과 그들이 등록한 수업을 나타냅니다.

 

문제

적어도 다섯 명의 학생이 있는 모든 수업을 찾는 해결책을 작성하세요.

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

결과 형식은 다음 예시와 같습니다.

Example 1:

Input: 
Courses table:
+---------+----------+
| student | class    |
+---------+----------+
| A       | Math     |
| B       | English  |
| C       | Math     |
| D       | Biology  |
| E       | Math     |
| F       | Computer |
| G       | Math     |
| H       | Math     |
| I       | Math     |
+---------+----------+
Output: 
+---------+
| class   |
+---------+
| Math    |
+---------+

설명 :

- Math는 학생이 6명이므로 포함합니다.

- English는 학생이 1명이므로 포함하지 않습니다.

- Biology는 학생이 1명이므로 포함하지 않습니다.

- Computer는 학생이 1명이므로 포함하지 않습니다.

 

✏️ 풀이

import pandas as pd

def find_classes(courses: pd.DataFrame) -> pd.DataFrame:
    df = courses.groupby('class')['student'].nunique().reset_index(name = 'cnt')

    return df[df['cnt'] >= 5][['class']]

1. groupby를 통해 각 class별 카운트

2. 5명 이상인 class만 조회