+-----------------+---------+
| Column Name | Type |
+-----------------+---------+
| user_id | int |
| email | varchar |
+-----------------+---------+
이 문제는 주어진 설명을 기준으로 "유효한 이메일 주소"를 찾는 SQL 쿼리를 작성하는 문제입니다.
유효한 이메일 주소의 규칙은 다음과 같습니다:
1. 이메일 주소에는 정확히 한 개의 @ 기호가 있어야 합니다.
2. 이메일 주소는 .com으로 끝나야 합니다.
3. @ 기호 앞 부분은 **알파벳, 숫자, 언더스코어(_)**만 포함해야합니다.
4. @ 기호 뒤에서 .com 사이에는 알파벳만 포함된 도메인 이름이 있어야합니다.
목표:
- 위 조건을 충족하는 이메일 주소들을 찾아 user_id 기준으로 오름차순으로 정렬된 결과를 반환합니다.
결과 형식:
- 결과 테이블에는 user_id와 email 컬럼이 포함되며, user_id 기준으로 오름차순 정렬됩니다.
정답
import pandas as pd
def find_valid_emails(users: pd.DataFrame) -> pd.DataFrame:
pattern = r'^[a-zA-Z0-9_]+@[a-zA-Z]+.com$'
ft = users[users['email'].str.contains(pattern, regex=True)]
ft_sorted = ft.sort_values(by='user_id')
return ft_sorted[['user_id', 'email']]
정규식에 대해서 잘 알아야 풀기 쉬운 문제였다
^ : 첫 시작
$ : 문장의 끝을 알림
+ : 앞의 조건을 하나라도 포함해야한다
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 2888. Reshape Data: Concatenate (0) | 2025.03.27 |
---|---|
[LeetCode - Pandas] (Easy) 2889. Reshape Data: Pivot (0) | 2025.03.27 |
[LeetCode - Pandas] (Easy) 2890. Reshape Data: Melt (0) | 2025.03.26 |
[LeetCode - Pandas] (Easy) 2891. Method Chaining (0) | 2025.03.26 |
[LeetCode - Pandas] (Easy) 3465. Find Products with Valid Serial Numbers (0) | 2025.03.25 |