본문 바로가기
파이썬 코딩테스트/프로그래머스

프로그래머스 / 신규 아이디 추천 / 파이썬

by S.T.Lee 2022. 2. 25.

https://programmers.co.kr/learn/courses/30/lessons/72410

from string import ascii_lowercase

def delete(new_id):
    module = list(ascii_lowercase) + ["-", "_", "."] + ["1","2","3","4","5","6","7","8","9","0"]
    for i in new_id:
        if i not in module:
            new_id = new_id.replace(i,"")
    return new_id

def check_dot_once(new_id):
    for i in range(len(new_id)-1):
        try:
            if (new_id[i] == ".") & (new_id[i+1] == "."):
                if i == len(new_id)-1:
                    new_id = new_id[:-1]
                    return new_id
                else:
                    new_id = new_id[:i+1] + new_id[i+2:]
                    return check_dot_once(new_id)
        except:#5단계
            return "a"
    return new_id

def check_dot_loc(new_id):
    try:
        if new_id[0] == ".":
            new_id = new_id[1:]
        if new_id[-1] == ".":
            new_id = new_id[:-1]
    except: #5단계
        return "a"
    return new_id

def check_len(new_id):
    if len(new_id) >= 16:
        new_id = new_id[:15]
    if new_id[-1] == ".":
        new_id = new_id[:-1]
    return new_id

def add(new_id):
    if len(new_id) <= 2:
        new_id = new_id + new_id[-1]
        return add(new_id)
    return new_id

def solution(new_id):
    answer = ''
    #1단계
    new_id = new_id.lower()
    #2단계
    new_id = delete(new_id)
    #3단계
    new_id = check_dot_once(new_id)
    #4단계
    new_id = check_dot_loc(new_id)
    #6단계
    new_id = check_len(new_id)
    #7단계
    answer = add(new_id)
    return answer