ice rabbit programming

[PS][프로그래머스][2021 카카오] 신규 아이디 추천 본문

PS

[PS][프로그래머스][2021 카카오] 신규 아이디 추천

판교토끼 2021. 3. 29. 01:18

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

 

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

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

programmers.co.kr

2021년 카카오 블라인드 신규 채용 A번 문제였던 신규 아이디 추천이다. 당시에도 코테를 한 번 볼 요량으로 신청했었는데, 그 때도 어렵지 않게 풀었던 문제이다. 이번에 다시 풀어보아 기록을 티스토리에도 남기려 한다.

공식 해답은 카카오 기술 블로그에 자세히 나와 있다.

문제는 그렇게 어렵지 않고, 단계별로 자세히 나아갈 길을 알려 준다(1. 대문자를 제거해라, 2. 문자 제한을 줘라 등등). 히든 테케가 좀 되지만 예시 테케가 꽤나 많이 주어지고, 만들어보기도 어렵지 않은 편이다. 시키는대로 잘 짜면 맞히는 것은 어렵지 않다. 정답률도 당시 57%로 1번 문제인 만큼 가장 높았다. 서류에서 거르지 않고 거의 다 코테 응시 기회가 부여되는 블라인드 공채 특성 상, 실제로는 57%보다 정답률이 높을 것이라고 생각한다.

본인은 아래와 같이 단계별로 그냥 구현을 해서 풀었다. 정규식은 소문자/-_./숫자를 제외하고 제거할 때에만 사용했다.

import re

def solution(new_id):
    answer = new_id
    answer = answer.lower()
    answer = re.sub('[^0-9a-z-_.]', '', answer)
    while answer.find('..') >= 0:
        answer = answer.replace('..', '.')
    if answer.startswith('.'):
        answer = answer[1:]
    if answer.endswith('.'):
        answer = answer[:-1]
    if not answer:
        answer = 'a'
    if len(answer) >= 16:
        answer = answer[:15]
    if answer.endswith('.'):
        answer = answer[:-1]
    while len(answer) <= 2:
        answer += answer[-1]
    return answer

 

정답을 내면 다른 사람들의 풀이를 볼 수 있는데, 그 중에 따봉을 가장 많이 받은 풀이를 보니 다 정규식을 사용했더라. 그러면 분기 처리도 필요 없고, 더 간단하게 구현이 가능하다.