프로그래머스/lv.1

신규 아이디 추천

bingual 2024. 1. 28. 19:34
반응형

 

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

 

프로그래머스

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

programmers.co.kr

문제풀이

정규 표현식을 사용하는게 핵심. 2021년도 문제다. 요즘에는 AI 발달로 인해 현업에서도 정규표현식을 검색해가며 구현할 필요가 없어졌기에 크게 유의미 하지는 않은거 같다.

import re


def solution(new_id):
    new_id = new_id.lower()  # 대문자를 소문자로 치환
    new_id = re.sub(r"[^a-z0-9-_.]", "", new_id)  # 소문자, 정수, -_. 외에 제거
    new_id = re.sub(r"\.{2,}", ".", new_id)  # 연속된 마침표는 하나의 마침표로 치환
    new_id = new_id.strip(".")  # 처음과 끝에 마침표 제거

    # 공백은 a로 치환
    if not new_id:
        new_id = "a"

    # 16자 이상일 때 넘어가는 문자 제거, 끝에 공백이 있다면 제거
    if len(new_id) >= 16:
        new_id = new_id[:15]
        new_id = new_id.rstrip(".")

    # 길이가 3 이상이 될 때 까지 마지막 문자를 끝에 붙임
    while len(new_id) <= 2:
        new_id += new_id[-1]

    return new_id