2021 KAKAO BLIND RECRUITMENT : 신규 아이디 추천

Minhee kang·2021년 6월 28일
0

문제 보러 가기 👈 클릭!

💡 풀이

✔ 풀이 방법

1단계 :
lower() 함수 사용하여 문자열 내부의 모든 대문자를 소문자로 변환

2단계 :
<처음 풀이>
아스키코드 사용하여 숫자범위(48~57), 알파벳소문자범위
(97~122), 가능한 특수문자(95, 45, 46) 일 경우에만 answer에 더해줌

<새로운 풀이>
isalpha() , isdigit(), in연산자 사용 하여 해당 문자가 숫자 또는 알파벳소문자 또는 가능한 특수문자 인지 판별하여 맞는것들만 answer에 더해줌

<또 다른 풀이>
정규표현식 !! (조만간 제대로 공부해서 해당 방법도 추가하자)

3단계 :
answer에 '..'가 없을 때까지 '..'을 '.'로 대체 (문자열.replace('..', '.') 사용)

4단계 :
양쪽 끝에 '.'가 있다면 제거 (문자열.strip('.') 사용)

5단계 :
문자열이 비었다면 (if not '': ) 'a'대입
-> ''는 비어있기 때문에 False 의미

6단계 & 7단계:
길이 > 15일때
-> 0~15까지 자르고, 맨 오른쪽 '.'제거(왼쪽은 4단계에서 제거 되었기 때문) (슬라이싱, 문자열.rstrip('.') 사용)
길이 < 3 일때
-> 길이가 3이 될 때까지(while len() != 3) 마지막문자 계속 더함 (문자열 +=문자열[-1])

💡 전체 소스 코드

def solution(new_id):
    answer = ''

    #1단계
    new_id = new_id.lower()

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

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

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

    #5단계
    if not answer:
        answer = 'a'

    #6단계 & 7단계
    if len(answer) > 15:
        answer = answer[0:15].rstrip('.')
    elif len(answer) < 3:
        while len(answer) != 3:
            answer += answer[-1]

    return answer

0개의 댓글

관련 채용 정보