[프로그래머스] 신규 아이디 추천

hagnoykmik·2023년 10월 11일
0

코딩테스트 연습

목록 보기
7/36
post-thumbnail

아이디어

  • 그냥 하라는대로 구현했다.
  • 여러개의 '.''.'하나로 치환하는 부분에서 replace를 생각하긴 했으나 그냥
    answer.replace('.', '') 를 하면 모든 '.'이 사라져서 어떻게 해야 하나 했는데
    answer.replace('..', '.') 이렇게 하면 된다는 것을 배웠다.
  • '.'이 2개 이상일 수 있으니 while문을 이용해서 '.'하나만 남을 때까지 반복해준다.

코드

def solution(new_id):
    answer = ''
    impossible = '~!@#$%^&*()=+[{]}:?,<>/'
    
    # 1단계. 모든 대문자를 소문자로 치환한다.
    new_id = new_id.lower()
    
    # 2단계. 가능한 문자빼고 제거
    for char in new_id:
        if char not in impossible:
            answer += char
    
    # 3단계. 마침표 2개이상이면 하나로 치환한다.
    while '..' in answer:
        answer = answer.replace('..', '.',)
    
    # 4단계. 처음과 끝의 마침표 없애기
    answer = answer.strip('.')
    
    # 5단계. 빈문자열이면 a대입
    if answer == '':
        answer += 'a'
    
    # 6단계. 15글자로 맞춘다.
    answer = answer[:15].rstrip('.')
    
    # 7단계. 2글자보다 작을때 마지막 문자열 붙여준다.
    n = len(answer)
    if n <= 2:
        answer += answer[-1] * (3 - n)
        
    return answer
profile
성장하는 개발자, 김경아입니다.

0개의 댓글