[알고리즘] 신규아이디 추천

조예진·2022년 7월 3일
2
post-thumbnail
post-custom-banner

Lv1. 신규 아이디 추천 (by python)

파이썬 공부 중이라 파이썬이랑 친해지기 위해 알고리즘도 파이썬으로 첫 도전!

제일 애먹었던 부분이
step 3. 2번 이상 연속된 .마침표 부분을 하나의 마침표(.) 치환하는 부분

처음에는 for문을 사용했지만, 최대한 for문은 지양하고 싶어서 정규식으로 변경했다.

정규식 표현: [.]{2,} : [.] 마침표가 {2,} 2번이상 될 경우에 대한 정규식

코드

import re
def solution(new_id):
    answer = ''
    # 1.소문자 치환
    answer = new_id.lower()
    
    # 2.알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)
    regex = re.compile('[^a-z0-9-_.]') 
    answer = re.sub(regex, "", answer)

    # 3. 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 
    answer = re.sub('[.]{2,}', '.', answer) 
        
    # 4. 처음과 끝에 .포함이면 제거하기
    answer = answer.lstrip('.')
    answer = answer.rstrip('.')
    

    # 5. 위에 한 후에 빈문자열이면 new_id에 "a"를 대입함
    if(not answer):
        answer = "a"
    
    # 6. 16자 문자 이상이면 첫 15개 문자 제외한 나머지 문자 제거
    if(16 <= len(answer)):
        answer = answer[0:15]

    answer = answer.rstrip('.')
    
    # 7. new_id의 길이가 2자 이하라면, 길이가 3될 때까지 마지막 문자로 채우기
    if(len(answer) <= 2):
        for a in range(len(answer), 3):
            answer += answer[len(answer)-1]
            if(len(answer) == 3):
                break

    return answer

다른 분들 코드와 비교했을 때 많이 부족함을 느낀다..!!....
더 효율적으로 풀고 싶으신 분들은 패스해주세요..!!

profile
블로그 이전 중 -> https://devjooj.tistory.com/
post-custom-banner

0개의 댓글