Programmers Algorithm - 신규 아이디 추천

Myung Jin Kim·2023년 9월 24일
0

문자열 검색 및 처리가 핵심으로 정규식을 알면 문제를 수월하게 풀 수 있다. 정규식을 작성하고 정규식 테스트 등과 같은 사이트에서 미리 확인을 해보면 용이하다.


function solution(new_id) {

function solution(new_id) {
    const condition = /^(?=.{3,15}$)[a-z0-9](?:[a-z0-9-_.]*[a-z0-9])?$/g.test(new_id);
    if(condition) {
        return new_id;
    }
    
    const step1 = new_id.toLowerCase();
    const step2 = step1.replaceAll(/[~!@#$%^&*()=+[\]{}:?,<>/]/g, '');
    const step3 = step2.replaceAll(/\.{2,}/g, '.');
    const step4 = step3.replaceAll(/^\.|\.$/g, '');
    let step5 = step4;
    if(step5.length === 0) {
        step5 = 'a';
    }
    const step6_1 = step5.substring(0, 15);
    const step6_2 = step6_1.replaceAll(/^\.|\.$/g, '');
    let step7 = step6_2;
    if(step6_2.length <= 2) {
        step7 = step6_2.padEnd(3, step6_2[step6_2.length - 1]);
    }
    return step7;
}

기본적인 정규식은 알지만 이번 문제를 푸는데 있어서 /^(?=.{3,15}$)[a-z0-9](?:[a-z0-9-_.]*[a-z0-9])?$/g 와 같은 정규식들은 gpt 의 도움을 받았다. GPT 알려준 정규식이 정말 옳은 정규식인지 판단하기 위해서라도 공부를 해둬야겠다.

profile
개발을 취미로 하고 싶은 개발자를 목표로 살고 있습니다

0개의 댓글