[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 3436. Find Valid Emails

잰잰' 2025. 3. 25. 16:19
+-----------------+---------+
| 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']]

 

정규식에 대해서 잘 알아야 풀기 쉬운 문제였다

 

^ : 첫 시작

$ : 문장의 끝을 알림

+ : 앞의 조건을 하나라도 포함해야한다