나의 개발일지

[프로그래머스] Lv.1 신규 아이디 추천 [Python, 파이썬] KAKAO 본문

프로그래머스

[프로그래머스] Lv.1 신규 아이디 추천 [Python, 파이썬] KAKAO

YoonJuHan 2023. 10. 6. 19:59

 

import re

def solution(new_id):
    
    special = ["~","!","@","#","$","%","^","&","*","(",")","<","=","+","[","{","]","}",":","?",",","<",">","/"]
    
    new_id = new_id.lower()                     # 1
    
    for i in special:                           # 2
        new_id = new_id.replace(i, "")
    
    new_id = re.sub("\.+", ".", new_id)         # 3
    
    if new_id[0] == ".": new_id = new_id[1:]    # 4
    if new_id != "" and new_id[-1] == ".":
        new_id = new_id[:-1]
    
    if new_id == "":                            # 5
        new_id = "a"
        
    if len(new_id) > 15:                        # 6
        new_id = new_id[:15]
        while new_id[-1] == ".":
            new_id = new_id[:-1]
    
    while len(new_id) <= 2:                     # 7
        new_id += new_id[-1]
        
    print(new_id)
    
    return new_id

 

  • 정규식을 잘 활용한 풀이
import re

def solution(new_id):
    st = new_id
    st = st.lower()
    st = re.sub('[^a-z0-9\-_.]', '', st)
    st = re.sub('\.+', '.', st)
    st = re.sub('^[.]|[.]$', '', st)
    if st == "":
        st = 'a' 
    if len(st) > 15:
        st = st[:15]
        while st[-1] == ".":
            st = st[:-1]
    while len(st) <= 2:              
        st += st[-1]
        
    return st
Comments