본문 바로가기

알고리즘

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

728x90
 

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

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

programmers.co.kr

 

나의코드

import re

def solution(new_id):
    answer = ''
    new_id=new_id.lower()
    
    chars = "~!@#$%^&*()=+[{]}:?,<>/"
    for c in range(len(chars)):
        new_id=new_id.replace(chars[c],"")
    
    new_id=re.sub('[.]+', '.', new_id)
    
    new_id=new_id.strip('.')
    
    if len(new_id)==0:
        new_id='a'
    
    if len(new_id)>=16:
        new_id = new_id[:15]
        new_id = new_id.rstrip('.')
    
    if len(new_id)<=2:
        last=new_id[-1]
        while len(new_id)<=2:
            new_id += last


    return new_id

string과 관련된 함수를 모른다면 전혀 풀 수 없는 문제이다. 다른 말로 하면 알면 무조건 풀 수 있는 문제이다. 그래서 레벨1인것 같다. 이 문제를 통해 string과 관련된 함수를 정리할 수 있었다. 또한 처음으로 정규식이라는 것을 접하게 되었다. 아래 정답 코드는 정규식을 통해 해결하였다.

 

정답코드

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

이렇게 정규식을 사용할 수 있다는 것을 처음으로 알았다. 다른 포스트를 통해 정규식에 대해 전체적으로 정리해보도록 해야겠다...

이렇게도 문제를 풀 수 있다니... 신기방기....

반응형