삽집하는 개발들/알고리즘

[13일차][프로그래머스][2021 카카오 - 72410]신규 아이디 추천

악투 2023. 6. 26. 12:39
반응형
import re

def solution(new_id):
    #1. new_id 대문자 -> 소문자
    new_id = new_id.lower()
    
    #2. 알파벳 소문자, 숫자, -, _, . 제외한 나머지 모든 문자 제거
    new_id = re.sub("[^a-z0-9-_.]", '', new_id)
    
    #3. .. <-- 연속 2개이상이면 .로 치환
    list_new_id = list(new_id)
    new_id_arr = []
    for char in list_new_id:       
        if '.' == char and new_id_arr[-1:] == ['.']:   
            new_id_arr.pop()
            new_id_arr.append(char)
        else:
            new_id_arr.append(char)    
            
    new_id = ''.join(new_id_arr)
    
    #4. 마침표가 .처음이거나 끝이면 없애기
    new_id = str(new_id).strip('.')
    
    #5. 빈 문자열이면 a를 대입
    #6 new_id 16자 이상이면, new_id 15개 문자를 제외한 나머지 문자 제거
    if len(new_id) == 0:
        new_id = 'a'
    elif len(new_id) >= 16:
        new_id = new_id[0:15].strip('.')
    
    #7. new_id의 길이가 2자 이하이면 3이 될때까지 new_id의 끝문자를 반복해서 붙인다.
    while len(new_id) <= 2:    
        new_id = new_id + new_id[len(new_id)-1:]
    
    return new_id
반응형