+--------------+------------+
| Column Name | Type |
+--------------+------------+
| product_id | int |
| product_name | varchar |
| description | varchar |
+--------------+------------+
이 문제는 주어진 설명을 기준으로 "유효한 시리얼 번호"를 포함하는 제품들을 찾는 SQL 쿼리를 작성하는 문제입니다.
유효한 시리얼 번호 패턴에 대한 규칙은 다음과 같습니다:
1. 시리얼 번호는 "SN" 으로 시작합니다(대소문자 구분).
2. 그 뒤에는 정확히 4개의 숫자가 옵니다.
3. 그 뒤에는 하이픈(-)이 오고, 다시 정확히 4개의 숫자가 옵니다.
4. 이 시리얼 번호는 제품 설명(description) 내에 포함되어 있어야 하며, 반드시 설명 내 어디에서든 나타야하 합니다.
목표:
- 각 제품의 description에서 유효한 시리얼 번호 패턴을 찾습니다.
- 유효한 시리얼 번호를 포함한 모든 제품을 찾아, product_id 순으로 오름차순으로 정렬합니다.
결과 형식:
- 결과 테이블에는 product_id, name, description이 포함되며, product_id 기준으로 오름차순 정렬됩니다.
정답
import pandas as pd
def find_valid_serial_products(products: pd.DataFrame) -> pd.DataFrame:
# 유효한 시리얼 번호의 정규 표현식 패턴 (SN 뒤에 4개의 숫자, 하이픈, 또 4개의 숫자)
pattern = r'SN\d{4}-\d{4}\b'
# # description 컬럼에서 정규 표현식 패턴을 포함하는 행만 필터링
ft = products[products['description'].str.contains(pattern, regex=True)]
# # product_id를 기준으로 오름차순으로 정렬
ft_sorted = ft.sort_values(by='product_id')
# # 결과 반환 (product_id, product_name, description만 포함)
return ft_sorted[['product_id', 'product_name', 'description']]
'[코딩테스트] > [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) 3436. Find Valid Emails (0) | 2025.03.25 |