나의 풀이

def solution(new_id):
    alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]
    numbers = [str(i) for i in range(10)]
    validation = alphabet + numbers + ['-', '_', '.']

    # level 1, 2
    for i, j in enumerate(new_id):
        if j.isupper():
            new_id = new_id.replace(j, j.lower())

        if j not in validation:
            new_id = new_id.replace(j, '')
    print("level 1, 2", new_id)

    # level 3
    new_id = [i for i in new_id]
    for i in range(len(new_id) - 1):
        if new_id[i] == '.':
            if new_id[i + 1] == '.':
                new_id[i] = ''
    print("level 3 ", "".join(map(str, new_id)))

    # level 4
    new_id = "".join(map(str, new_id))
    new_id = [i for i in new_id]
    while True:
        if new_id[0] == '.':
            new_id[0] = ''
            continue

        if new_id[-1] == '.':
            new_id[-1] = ''
            continue
        break
    new_id = "".join(map(str, new_id))
    print("level 4 ", new_id)

    # level 5
    if not any(new_id):
        new_id = 'a'
    print("level 5 ", new_id)

    # level 6
    new_id = [i for i in new_id]
    if len(new_id) >= 16:
        new_id = new_id[:15]
        while True:
            if new_id[-1] == '.':
                new_id[-1] = ''
                continue
            break
    new_id = "".join(map(str, new_id))
    print("level 6 ", new_id)

    # level 7
    if len(new_id) <= 2:
        new_id = new_id + new_id[-1] * (3 - len(new_id))
    print("level 7", new_id)

    return new_id

 

배울만한 코드

def solution(new_id):
    answer = ""
    
    # level 1
    new_id = new_id.lower()
    
    # level 2
    for i in new_id:
        if i.isalpha() or i.isdigit() or i in ['-', '_', '.']:
            answer += i
        
    # level 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    
    # level 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    
    # level 5
    if answer == "":
        answer = 'a'

    # level 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    
    # level 7
    while len(answer) < 3:
        answer += answer[-1]
    
    return answer

 

정말 모든면에서 나보다 완벽한 코드라 보면서 머리가 멍한 기분이 들었다.

isalpha(), isdigit(), while '..' in answer:, .... 많은 성장을 할 수 있는 답안이었다.

+ Recent posts