😎코딩테스트 연습>2021 KAKAO BLIND RECRUITMENT>신규 아이디 추천
정규식과 사용자 지정 함수를 이용해 1단계씩 해결
import re
def repeat(string, length):
string = string * (length)
return string
def solution(new_id):
new_id = new_id.lower() #대문자->소문자
new_id = re.sub(r"[~!@#$%^&*()=+\[\{\]\}:?,<>/]","",new_id) #빼기(-), 밑줄(_), 마침표(.)를 제외한 특문 제거
new_id = re.sub("(([.])\\2{1,})", ".", new_id) #중복 마침표 하나로
new_id = new_id.strip(".") #앞뒤 마침표 제거
if(len(new_id) == 0): #문자열 공백일 때 a 추가
new_id = "a"
new_id = new_id[0:15] #문자열 15자리 출력
new_id = new_id.strip(".") #앞뒤 마침표 제거
if(len(new_id) < 3): #길이가 3 이하 일 때 3이 될 때까지 마지막 문자 추가
new_id = new_id + repeat(new_id.strip()[-1], 3-len(new_id))
return new_id
아쉬운 점
제외되는 특수문자를 전부 찾아서 쓴게 아쉬웠다.
예외가 적어 re.sub(r"[^a-z0-9\_\-\.]","",new_id) 로 고치는 게 더 좋을 것 같다.