본문 바로가기
알고리즘/프로그래머스

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

by SBOX Learning by doing 2022. 6. 21.
반응형

def solution(new_id):
    # 3가지 규칙에 위배 되면 role 함수 호출 후 리턴값 리턴 
    if (len(new_id) < 2) | (len(new_id) > 15):
        
        return role(new_id) 
    tmp = ''
    for i in range(len(new_id)):
        # .나오면
        if new_id[i] == '.':
            # .이 이어지면
            if tmp == '.':
                return role(new_id) 
            
        # 앞뒤로 .
        if (new_id[0] == '.') | (new_id[-1] == '.'):
            return role(new_id) 
        
        # 특수문자
        if new_id[i] in ("ASDFGHJKLZXCVBNMQWERTYUIOP~!@#$%^&*()=+[{]}:?,<>/"):
            return role(new_id) 

        # .이 이어지는지 확인
        tmp = new_id[i]
        
    return new_id

# 7단계 변경
def role(answer):
    # 1단계
    answer = answer.lower()
    # 2단계
    temp = ''
    befor_j = ''
    for j in range(len(answer)):

        if answer[j] in ('asdfghjklqwertyuiopzxcvbnm1234567890-_.'):

            # 3단계 .가 2번이상 아니라면
            if (answer[j] == '.') & (befor_j == '.'):
                continue
            temp += answer[j]
            befor_j = answer[j]
    answer = temp

    #4단계
    if (len(answer) <= 1) & (answer[0] == '.'):
        answer = ''
    else:
        if answer[0] == '.':
            answer = answer[1:]
        if answer[-1] == '.':
            answer = answer[:-1]
    #5단계
    if answer == '':
        answer = 'a'
    #6단계
    if len(answer) >= 16:
        answer =  answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    #7단계
    while len(answer) <= 2:
        answer += answer[-1]
    return answer

반응형

댓글