hye-log

[프로그래머스]신규 아이디 추천(Python) 본문

CodingTest/Programmers

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

iihye_ 2022. 7. 12. 21:14

0. 문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

1) 대문자 -> 소문자 치환

2) 소문자, 숫자, -, _, . 외에 문자 제거

3) 마침표 2번 이상 연속 -> 1개로

4) 마침표 처음과 끝 제거

5) 빈 문자열 -> 'a' 대입

6) 16자 이상 -> 15자 이후로 제거

7) 2자 이하 -> 마지막 문자 반복해서 붙이기

 

2. 입출력

# input
new_id = "...!@BaT#*..y.abcdefghijklm"

# output
result = "bat.y.abcdefghi"

 

3. 코드

1) 첫 번째 코드

import re

def solution(new_id):
    # new_id : 사용자가 입력한 아이디

    answer = ''

    # 1단계. 대문자 -> 소문자
    answer = new_id.lower()

    # 2단계. 특수문자 제거
    answer = re.sub('[^a-z0-9\-_.]', '', answer)

    # 3단계. 마침표(.) 연속을 1번으로
    answer = re.sub('(([.])\\2{1,})', '.', answer)

    # 4단계. 마침표(.) 처음/끝 제거
    answer = answer.strip('.')

    # 5단계. 빈 문자열이면 'a' 대입
    if answer == '':
        answer = 'a'

    # 6단계. 16자 이상이면 15개 제외 제거
    answer = answer[:15]
    answer = answer.strip('.')

    # 7단계. 2자 이하면 마지막 문자 반복하기
    if len(answer) == 2:
        character = answer[-1:]
        answer += character

    return answer

 

실행 결과

 

4. 알게된 점

1) re.sub에 정규식 사용

# 정규식 사용
import re
text = 'ABCabc!@#-_'
text = re.sub('[^a-z0-9\-_.]', '', text)

 

5. Github 링크

https://github.com/iihye/Algorithm/blob/main/Programmers/newid_rec.py

 

728x90
Comments