이숭간 공부기록

[프로그래머스] 파이썬 _신규아이디 추천 (2021 KAKAO BLIND) ⭕️ 본문

알고리즘/프로그래머스

[프로그래머스] 파이썬 _신규아이디 추천 (2021 KAKAO BLIND) ⭕️

이숭간 2021. 6. 20. 18:20
728x90

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

 

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

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

programmers.co.kr

 

문제유형 : 문자열, 구현

 

문제풀이

  • 정규표현식
    • 문자열(알파벳소문자, 알파벳ㄷ문자, 숫자, - ,_, . 를 제외한(^) 모든문자 제거하기
    •     new_id = re.sub(r"[^a-zA-Z0-9-_.]", "", new_id)
  • 문자열 양쪽끝 특정문자 제거 
    • strip() : 파라미터없을때는 공백을제거, 특정문자를 제거하고싶으면 해당문자를 파라미터로 주면됨

 

정답코드

import re


def solution(new_id):
    answer = ''

    new_id = new_id.lower()  # 소문자변환
    new_id = re.sub(r"[^a-z0-9-_.]", "", new_id) # 특수문자 제거
    
    # 연달아있는 마침표 하나로 합치기 
    count = 0
    id = ''
    for c in new_id:
        if c == '.' and count == 0:
            id += c
            count += 1
        elif c != '.':
            id += c
            count = 0

	# 양쪽끝 마침표 제거 
    id = id.strip('.')

	# 공백이면 a붙이기 
    if id == '':
        id += 'a'
    
    # 길이가 16이상이면 15로 자르기
    if len(id) >= 16:
        id = id[:15]
    
    # 마지막문자가 .이면 제거
    if id[-1] == '.':
        id = id[:-1]

	# 길이가 2이하일때 마지막문자를 길이 3까지 연장하기 
    if len(id) < 3:
        last = id[-1]
        while len(id) < 3:
            id += last
            
    return id