ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - 신규 아이디 추천
    Algorithm 2023. 5. 15. 19:16

     

    문제

     

    풀이

    주어진 문제조건에서 단계별로 친절하게 설명되어 있어 단계별로 진행하였다.

    1단계 : new_id 문자열을 소문자로 변환

    2단계 : '-', '.', '_'을 제외한 모든 특수문자을 찾아내는 정규식으로 replaceAll을 이용해 특수문자를 제거

    3단계 : 문자열에 점이 두번 연속 존재하는 ".." 문자열이 존재하지 않을 때 까지 문자열에서 ".."문자열을 "."로 변환

    4단계 : 문자열의 첫 글자나 마지막 글자가 "." 특수문자일 경우 마지막 글자 제거

    5단계 : 문자열 길이가 0이라면 문자열에 "a" 추가

    6단계 : 문자열의 길이가 15글자를 넘는다면 15글자까지 잘라내고 마지막 글자가 "." 특수기호일 경우 마지막 글자 제거

    7단계 : 문자열의 길이가 3보다 작다면 문자열의 길이가 3 이상이 될 때 까지 문자열의 마지막 글자를 문자열에 추가

    function solution(new_id) {
        let secondConditionReg = /[\{\}\[\]\/?,:\)*~!^\+<>@\#$%&\=\(]/g;
        
        // 1단계
        let answer = new_id.toLowerCase();
        
        // 2단계
        answer = answer.replaceAll(secondConditionReg, "");
        
        // 3단계
        while(answer.includes('..')){
            answer = answer.replace('..', '.');
        }
        
        // 4단계
        answer = answer.replace(/^\.|\.$/g, '');
        
        // 5단계
        if(answer.length === 0) answer += 'a';
        
        // 6단계
        if(answer.length > 15) {
            answer = answer.substr(0, 15);
            answer = answer.replace(/\.$/, '');
        }
        
        // 7단계
        if(answer.length < 3){
            while(answer.length < 3) {
                answer += answer[answer.length-1];
            }
        }
        
        return answer;
    }
Designed by Tistory.