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만 조회
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 586. Customer Placing the Largest Number of Orders (0) | 2025.04.30 |
---|---|
[LeetCode - Pandas] (Easy) 595. Big Countries (0) | 2025.04.29 |
[LeetCode - Pandas] (Easy) 607. Sales Person (0) | 2025.04.28 |
[LeetCode - Pandas] (Easy) 610. Triangle Judgement (0) | 2025.04.28 |
[LeetCode - Pandas] (Easy) 619. Biggest Single Number (0) | 2025.04.25 |