[코딩테스트]/[Pandas]
[LeetCode - Pandas] (Easy) 1050. Actors and Directors Who Cooperated At Least Three Times
잰잰'
2025. 4. 24. 16:34
Table: ActorDirector
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| actor_id | int |
| director_id | int |
| timestamp | int |
+-------------+---------+
timestamp는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
문제
배우가 감독과 최소 3번 이상 협업한 모든 (actor_id, director_id) 쌍을 찾는 해결책을 작성하십시오.
결과 테이블은 아무 순서로 반환해도 됩니다.
결과 형식은 아래 예시와 같습니다.
Example 1:
Input:
ActorDirector table:
+-------------+-------------+-------------+
| actor_id | director_id | timestamp |
+-------------+-------------+-------------+
| 1 | 1 | 0 |
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 1 | 2 | 3 |
| 1 | 2 | 4 |
| 2 | 1 | 5 |
| 2 | 1 | 6 |
+-------------+-------------+-------------+
Output:
+-------------+-------------+
| actor_id | director_id |
+-------------+-------------+
| 1 | 1 |
+-------------+-------------+
설명 : 유일한 쌍은 (1, 1)로, 이들은 정확히 3번 협업했습니다.
✏️ 풀이
import pandas as pd
def actors_and_directors(actor_director: pd.DataFrame) -> pd.DataFrame:
df = actor_director.groupby(['actor_id', 'director_id'])['director_id'].count().reset_index(name='cnt')
return df[df['cnt'] >= 3][['actor_id', 'director_id']]
1. actor_id, director_id 별 협업 수 카운트
2. 카운트 수가 3번 이상인 데이터만 조회