[프로그래머스] 신규 아이디 추천

yewon Lee·2023년 4월 4일
1

😎코딩테스트 연습>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) 로 고치는 게 더 좋을 것 같다.
profile
시작

0개의 댓글