어디까지 갈 수 있을까?

[정규 표현식] 프로그래머스 신규 아이디 추천 본문

알고리즘/알고리즘

[정규 표현식] 프로그래머스 신규 아이디 추천

_Min 2021. 5. 1. 18:31

문제링크 programmers.co.kr/learn/courses/30/lessons/72410

 

처음에는 함수 여러개를 만들어서 다 비교하다가 정규표현식으로 풀면 깔끔하길래 풀어봤다

 

[답코드]

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 len(st)==0:
        st = 'a'
    else:
        st=st[0:15]

    st = re.sub('^[.]|[.]$', '', st)

    if len(st)<=2:
        st+=st[-1]*(3-len(st))
    
    return st

 

[풀이법]

import re

re.sub(패턴, 바꿀문자열, 문자열) 이다

 

[^]는 not의 의미, a-z0-9-_. 을 제외한 문자열들은 ''로 치환하고

+는 하나 이상의 의미, '.'이 하나이상 반복되면 '.'으로 치환해준다

^는 처음, $는 마지막이라는 의미, .이 시작 위치에 있거나 마지막에 있으면 ''로 치환해준다

 

 

    if len(st)==0:
        st = 'a'
    else:
        st=st[0:15]

 

이 코드는 한 줄로 st='a' if len(st)==0 else st=st[0:15] 이렇게 나타낼 수 있으나,

개인적으로 가독성이 좋은 코드를 좋아하여 사용하지 않을 것 같다.

728x90
Comments