[5/23] 신규 아이디 추천

이경준·2021년 5월 23일
0

코테

목록 보기
7/140
post-custom-banner

문제

내 코드

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

    #2단계
    for i in new_id:
        if (i.isdigit() or i.isalpha() or i in ('-', '_', '.')):
            answer += i

    #3단계
    while ('..' in answer):
        answer = answer.replace('..', '.')

    #4단계
    answer = answer.strip('.')

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

    #6단계
    if (len(answer) >= 16):
        answer = answer[0:15]
    answer = answer.strip('.')

    #7단계
    if (len(answer) <= 2):
        while (len(answer) != 3):
            answer += answer[-1]
    return answer

문제에 나온 절차대로 진행함

효율적인 코드

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

    #2단계
    for i in new_id:
        if (i.isdigit() or i.isalpha() or i in ('-', '_', '.')):
            answer += i

    #3단계
    while ('..' in answer):
        answer = answer.replace('..', '.')

    #4단계
    answer = answer.strip('.')

    #5단계
    if (answer == ''):
        answer += 'a'

    #6단계
    if (len(answer) >= 16):
        answer = answer[:15]
    answer = answer.strip('.')

    #7단계
    if (len(answer) <= 2):
        while (len(answer) != 3):
            answer += answer[-1]
    return answer

피드백

  • len(answer)=0 ==> answer=''
  • answer[0:15] ==> answer[:15]
  • 그동안은 배열을 만들어서 문자를 append 시켜줬는데, 그냥 바로 문자열 만들어서 하나씩 더하는게 효과적이다.

배운 것

  • 문자열.strip('k') : 양 끝의 k를 지워준다.
  • isdigit(), isalpha()는 문자열만 사용 가능 (리스트 사용 불가)
profile
The Show Must Go On
post-custom-banner

0개의 댓글