(Lv.1) 2021 KAKAO BLIND RECRUITMENT_신규 아이디 추천

duo2208·2022년 6월 1일
0

Algorithm

목록 보기
1/5
post-thumbnail

Link : 프로그래머스 > 2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천
Language : Python3


Keyward

💡 문자열(String) - 특정 문자열 제거
💡 정규식(regex)


Solution

import re

def solution(new_id):
    # step1 : 소문자 치환
    new_id = new_id.lower()
    
    # step2 : 소문자, 숫자, -, _, .를 제외한 모든 문자를 제거
    new_id = re.sub(r"[^a-z0-9._-]+", '', new_id)
    
    # step3 : 연속된 마침표 치환
    new_id = re.sub(r"[.]+", '.', new_id)
    
    # step4 : 양 끝단의 마침표 제거
    new_id = new_id.strip('.')
    
    # step5 : 빈 문자열이라면, a를 대입
    new_id = 'a' if len(new_id) == 0 else new_id
        
    # step6 : 15개 문자를 제외한 나머지 문자 모두제거.
    new_id = new_id[:15].rstrip('.')
        
    # step7 : new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복
    new_id += new_id[-1]*(3-len(new_id))

    answer = new_id
    return answer

step5
파이썬에서 빈 문자열을 확인하는 방법
(1) not 연산자 사용
(2) len() 함수 사용
(3) not + string.strip() 사용
(4) not + string.isspace() 사용

step6
"new_id의 길이가 16자 이상이면" 이라는 조건이 붙어있지만,
if len(new_id) >= 16 이라는 조건식을 붙여줄 필요가 없습니다.
String 의 길이가 15보다 짧은 경우에는 해당 len(string)을 stop index로 사용하기 때문입니다.

step7
재귀를 사용하기보다 파이썬의 string multiplication 을 사용하면 훨씬 간결해집니다.


Note

python re library

파이썬에서 정규표현식을 사용할 때, 내장 모듈인 re를 사용합니다.

regex

문자열 검색이나 치환작업을 간편하게 처리하는 정규표현식을 복습합니다.

정규표현식 문법

[ : 문자 class 시작
] : 문자 class 끝
^ : 부정
+ : 패턴이 1번이상 등장함

다양한 정규 표현식 패턴 예시

1자리 숫자 : "[0123456789]" 혹은 "[0-9]" 혹은 r"[\d]" 혹은 r"\d"
2자리 숫자 : "[0123456789][0123456789]" 혹은 "[0-9][0-9]" 혹은 "\d\d"
3자리 숫자 : r"\d\d\d" 혹은 r"\d{3}"
2자리~4자리 숫자 - r"\d{2,4}"
휴대폰 번호 : r"010[1-9]\d{7}"
알파벳 소문자 1글자 : [a-z]


📌 참고

[풀이] 1. 신규 아이디 추천 (2021 Kakao Blind Recruitment)

0개의 댓글