[プログラマー]新しいアイデンティティを推奨


🔗 レベル1:新規IDの推奨
[Solution]
def solution(new_id):
    
    # 1단계
    id_1 = ''
    for i in new_id:
        if ord(i) >= 65 and ord(i) <= 90:
            id_1 += chr(ord(i) + 32)
        else:
            id_1 += i
    # print(id_1)
    
    # 2단계
    # '-'45, '_'95, '.'46, 소문자 97~122, 숫자 48~57
    id_2 = ''
    for i in id_1:
        if ord(i) == 45 or ord(i) == 46 or ord(i) == 95 \
            or (ord(i) >= 97 and ord(i) <= 122) or (ord(i) >= 48 and ord(i) <=57):
                id_2 += i
    # print(id_2)
    
    # 3단계
    def third(arr):
        answer = arr[0]
        dst = [arr[0]]
        for i in range(1, len(arr)):
            if dst[len(dst)-1] == arr[i] and ord(arr[i]) == 46:
                continue
            dst.append(arr[i])
            answer += arr[i]
        return answer
    
    id_3 = third(id_2)
    # print(id_3)
        
    # 4단계
    id_4 = ''
    for i in range(len(id_3)):
        if (i == 0 or i == len(id_3)-1) and ord(id_3[i]) == 46:
            continue
        id_4 += id_3[i]
    # print(id_4)

    # 5단계
    if id_4 == '':
        id_4 = 'a'

    # print(id_4)
    
    # 6단계
    id_5 = ''
    if len(id_4) >= 16:
        id_5 = id_4[:15]
        if id_5[len(id_5)-1] =='.':
            id_5 = id_5[:-1]
    else: 
        id_5 = id_4
    # print(id_5)
    
    # 7단계
    answer = id_5
    i = len(answer)
    while i <= 2:
        answer += answer[-1]
        i += 1
    # print(answer)
        
        
    return answer
[Discussion]
  • Askyコードの使用方法:ord()chr()
  • 一般的な重複文字列除去方法(ステップ3)
  • に詳しい