https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr


내 풀이

 

from string import punctuation


def solution(new_id):
    new_id=new_id.lower()
    
    symbols=punctuation.replace('-','').replace('_','').replace('.','') 
    
    for symbol in symbols:
              new_id = new_id.replace(symbol,'')
    while '..' in new_id:
         new_id = new_id.replace('..','.')
    if new_id.startswith('.') or new_id.endswith('.'):
        new_id=new_id.strip('.')
    if not new_id:
        new_id='a'
    if len(new_id) >=16:
        new_id=new_id[:15]
        if new_id[-1]=='.':
            new_id=new_id[:-1]
    
    while len(new_id)<3:
          new_id += new_id[(len(new_id)-1)]   
    return new_id


다른사람의 풀이

import re

def solution(new_id):
    st = new_id
    st = st.lower()
    st = re.sub('[^a-z0-9\-_.]', '', st)
    st = re.sub('\.+', '.', st)
    st = re.sub('^[.]|[.]$', '', st)
    st = 'a' if len(st) == 0 else st[:15]
    st = re.sub('^[.]|[.]$', '', st)
    st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
    return st

정규식 연습하기 제일 좋은 문제라고 생각했는데 자꾸 테스트케이스 하나가 오류가 나서 포기하고 저렇게 풀었다.

두번째는 정규식으로 푼 모범답안

정규식을 알면 굉장히 쉽고 이쁘게 풀린다는걸 알 수 있다.

punctuation 라는 모듈은 특수모음 모음집이다.

punctuation안에 -,_ 를 공백으로 대체해서 걔내 들은 빼고 검사한 거다. 나름 이쁘게 풀었다고 생각했는데 역시 정규식이 짱이였다.

+ Recent posts