PROGRAMMERS Python Lv1. 신규 아이디 추천

최대 1 분 소요

이번 문제는 신규 아이디 추천입니다.

def solution(new_id):
    answer = ''
    # 1단계
    new_id = new_id.lower()
    # 2단계
    for word in new_id:
        if word.isalnum() or word in ('-_.'):
            answer += word
    # 3단계
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4단계
    answer = answer[1:] if answer[0] == '.' and len(answer) > 1 else answer
    answer = answer[:-1] if answer[-1] == '.' else answer

    # 5단계
    answer = 'a' if len(answer) == 0 else answer

    # 6단계
    if len(answer) >=  16:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7단계
    if len(answer) <= 3:
        answer = answer + answer[-1]* (3-len(answer))
    return answer

이 문제를 풀면서 새롭게 배우게 된건

if word.isalnum() or word in ('-_.')
#문자와 숫자의 판별법 그리고 in을 사용했을 때 문자들을 구분짓지 않아도 사용가능하다는 것

answer = answer.replace('..', '.')
#특정 문자를 바꾸고 싶을 때는 replace를 사용할 수 있다.

answer = answer[1:] if answer[0] == '.' and len(answer) > 1 else answer
answer = answer[:-1] if answer[-1] == '.' else answer

#제일 중요한 부분은 바로 lambda식을 더 연습하면 코드가 더 짧아지고
#매우 간편하다는 사실이다.

혹시 제 풀이에 오류가 있거나

더 좋은 방법이 있다면 댓글 남겨주시면 감사드립니다.

댓글남기기