이메일 주소가 문자열로 주어졌을 때, 아래 조건들을 기준으로 해당 주소가 유효한지 판별해야 합니다.
유효성 검사 조건
- 이메일 형식은 반드시 username@company.domain 구조를 따라야 합니다.
- 사용자명(username)에는 영문 대소문자, 숫자, 하이픈(-), 언더스코어(_)만 사용할 수 있습니다.
- 회사명(company)에는 영문 대소문자와 숫자만 사용할 수 있습니다.
- 도메인(domain)에는 영문 대소문자만 사용할 수 있습니다.
- 확장자(최상위 도메인)의 최대 길이는 3자입니다.
정규식을 활용한 해결 방법
이메일 주소의 유효성을 검사하려면 정규 표현식(Regular Expression)을 활용하는 것이 가장 효과적입니다. 파이썬에서는 re 라이브러리를 임포트하여 정규식을 사용할 수 있으며, 문자열이 특정 패턴과 일치하는지 확인할 때는 match() 함수를 사용합니다.
예를 들어, 입력값이 s = "popular_website15@comPany.com"이라면 출력 결과는 True가 됩니다.
풀이 절차
- 패턴(pat)을 다음과 같이 정의합니다:
[a-zA-Z0-9-_]로 시작하는 사용자명, 그 뒤에 @, 그다음[a-zA-Z0-9]로 구성된 회사명, 마침표(.)로 구분된 뒤 길이가 1~3인 소문자[a-z]도메인이 문자열 끝에 위치하는 형태 - 패턴이 입력 문자열 s와 일치하면 True를 반환합니다.
- 일치하지 않으면 False를 반환합니다.
구현 예제
아래 코드를 통해 실제 동작 방식을 확인해 보겠습니다.
import re
def solve(s):
pat = "^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+\.[a-z]{1,3}$"
if re.match(pat,s):
return True
return False
s = "popular_website15@comPany.com"
print(solve(s))입력
"popular_website15@comPany.com"
출력
True
이처럼 정규식 패턴 하나만 잘 설계하면 복잡한 조건문 없이도 간결하고 효율적으로 이메일 형식을 검증할 수 있습니다. 실무에서는 이 방식을 확장하여 더 엄격한 RFC 표준 기반의 검증 로직으로 발전시킬 수도 있습니다.