프로그래머스/lv.1
신규 아이디 추천
bingual
2024. 1. 28. 19:34
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
정규 표현식을 사용하는게 핵심. 2021년도 문제다. 요즘에는 AI 발달로 인해 현업에서도 정규표현식을 검색해가며 구현할 필요가 없어졌기에 크게 유의미 하지는 않은거 같다.
import re
def solution(new_id):
new_id = new_id.lower() # 대문자를 소문자로 치환
new_id = re.sub(r"[^a-z0-9-_.]", "", new_id) # 소문자, 정수, -_. 외에 제거
new_id = re.sub(r"\.{2,}", ".", new_id) # 연속된 마침표는 하나의 마침표로 치환
new_id = new_id.strip(".") # 처음과 끝에 마침표 제거
# 공백은 a로 치환
if not new_id:
new_id = "a"
# 16자 이상일 때 넘어가는 문자 제거, 끝에 공백이 있다면 제거
if len(new_id) >= 16:
new_id = new_id[:15]
new_id = new_id.rstrip(".")
# 길이가 3 이상이 될 때 까지 마지막 문자를 끝에 붙임
while len(new_id) <= 2:
new_id += new_id[-1]
return new_id