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

minan·2021년 6월 24일
0

프로그래머스

목록 보기
40/92

프로그래머스. 2021 KAKAO BLIND RECRUITMENT. Level 1. 신규 아이디 추천 파이썬 풀이

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

카카오의 노가다 문제
정규식을 이용하면 이 긴 코드를 극도로 줄일 수 있다

def solution(new_id):
    answer = ''
    
    new_id = new_id.lower() # 1단계

    new_id = list(new_id)
    
    temp = []
    
    # 2단계
    print("2단계")
    for i in range(len(new_id)):  
        if new_id[i].isalpha() or new_id[i].isdigit() or new_id[i] == '-' or new_id[i] == '_' or new_id[i] == '.':
            temp.append(new_id[i])
        else:
            print(i, ": not")
    
    new_id = temp

    print("".join(new_id))
    
    # 3단계
    print("3단계")
    for i in range(len(new_id)-1):
        if new_id[i] == new_id[i+1] == '.':
            new_id[i] = ' '
    
    new_id = ' '.join(new_id).split()
    print("".join(new_id))
    
    # 4단계
    print("4단계")
    if new_id and new_id[0] == '.':
        new_id.pop(0)
    if new_id and new_id[-1] == '.':
        new_id.pop(-1)
    print("".join(new_id))
            
    # 5단계
    print("5단계")
    if not new_id:
        new_id.append("a")
    
    print("".join(new_id))
    
    # 6단계
    print("6단계")
    if len(new_id) > 15:
        new_id = new_id[:15]
        
    if new_id and new_id[0] == '.':
        new_id.pop(0)
    if new_id and new_id[-1] == '.':
        new_id.pop(-1)
    
    print("".join(new_id))
    
    # 7단계
    print("7단계")
    if len(new_id) < 3:
        while len(new_id) != 3:
            new_id.append(new_id[-1])
            
    print("".join(new_id))
    
            
    
    return "".join(new_id)
profile
https://github.com/minhaaan

0개의 댓글