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

728x90
반응형

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

 

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

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

programmers.co.kr

2021 카카오 블라인드 코딩테스트 기출문제이다.

'정규표현식(Regular Expression)' 에 대해 묻는 문제이다.

예전에 웹해킹 공부를 잠깐 할 때, 대충 공부해서 잘 생각이 나지 않아 노가다로 일단 풀었다.

 

import re
def solution(new_id):
	# 1단계
    answer = new_id.lower()
    # 2단계
    answer = re.sub('[^a-z0-9_.-]', '', answer)
    # 3단계
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4단계
    if answer and answer[0] == '.':
        answer = answer.replace('.', '', 1)
    if answer and answer[-1] == '.':
        answer = answer[:-1]
    # 5단계
    if len(answer) == 0:
        answer = 'a'
    # 6단계
    if len(answer) >= 16:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7단계
    if len(answer) <= 2:
        while len(answer) <= 2:
            answer += answer[-1]
        
    return answer

 

밑에는 출제자가 의도한 풀이

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

 

# 카카오기출문제를 보면 정규표현식을 사용해서 풀 수 있는 문제들이 꽤 많이 나온다.

   물론 안써도 풀리긴 하지만, 코드도 깔끔해지고 빠르게 풀 수 있으니 공부를 해야겠다.

728x90
반응형
TAGS.

Comments