[코딩테스트]/[Pandas]
[LeetCode - Pandas] (Easy) 1148. Article Views I
잰잰'
2025. 4. 21. 16:03
Table: Views
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| article_id | int |
| author_id | int |
| viewer_id | int |
| view_date | date |
+---------------+---------+
이 테이블에는 기본 키(고유 값을 가진 열)가 없습니다. 이 테이블은 중복된 행을 가질 수 있습니다.
각 행은 특정 뷰어가 특정 날짜에 특정 저자가 작성한 기사를 열람했다는 정보를 나타냅니다.
같은 author_id와 viewer_id는 동일한 사람을 나타냅니다.
문제
자신의 기사를 한 번이라도 열람한 모든 저자를 찾는 솔루션을 작성하세요.
결과 테이블은 id를 기준으로 오름차순으로 정렬되어야 합니다.
결과 형식은 아래 예시와 같습니다.
Example 1:
Input:
Views table:
+------------+-----------+-----------+------------+
| article_id | author_id | viewer_id | view_date |
+------------+-----------+-----------+------------+
| 1 | 3 | 5 | 2019-08-01 |
| 1 | 3 | 6 | 2019-08-02 |
| 2 | 7 | 7 | 2019-08-01 |
| 2 | 7 | 6 | 2019-08-02 |
| 4 | 7 | 1 | 2019-07-22 |
| 3 | 4 | 4 | 2019-07-21 |
| 3 | 4 | 4 | 2019-07-21 |
+------------+-----------+-----------+------------+
Output:
+------+
| id |
+------+
| 4 |
| 7 |
+------+
✏️ 풀이
import pandas as pd
def article_views(views: pd.DataFrame) -> pd.DataFrame:
df = views[(views['author_id'] == views['viewer_id'])][['author_id']].drop_duplicates().rename(columns={'author_id':'id'})
result = df.sort_values(by='id')
return result
1. 자신의 기사를 한 번이라도 열람(author_id == viewer_id)한 저자(author_id) 조회
2. 중복 삭제를 위해 drop_duplicates() 사용
3. id로 컬럼명 변경
4. 오름차순 정렬