본문 바로가기

2.알고리즘/프로그래머스

[JS]신규 아이디 추천

https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=javascript 

 

프로그래머스

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

programmers.co.kr

제출코드

 


function solution(new_id) {
    let result = new_id.toLowerCase(); // 1단계

    result = result.replace(/[^a-z0-9-_.]/g, "") //2단계
    
    const arr = result.split("")


    result = arr.filter((e, i, array) => {
        if(e === '.'){
            return e != array[i-1]
        }else{
            return e
        }
    }).join("")

    

  

    const first_char = result.substring(0, 1);
    const last_char = result.charAt(result.length-1);
    
    if(first_char === "."){
        result = result.slice(1, result.length);
    }
    if(last_char === "."){
        result = result.slice(0, result.length-1);
    }



    if(result === ""){
        result = "a"
    }
    

    if(result.length >= 16){
        result = result.slice(0, 15)
        const last_char = result.charAt(result.length-1);
        if(last_char === "."){
            result = result.slice(0, result.length-1);
        }
    }

    
    if(result.length <= 3){
        const last_char = result[result.length-1]
        while(result.length <= 2){
            result = result + last_char
        }
    }

    return result
}

문제의 단계에 따라 한가지씩 풀이하였습니다.

 

풀이를 하고나서는 정규표현식을 안쓸 수 없었고, 다른 사람의 풀이와 비교한 결과

 

정규표현식으로 하면 코드를 간단하고 가독성 좋게 짤 수 있다는 장점을 이해하게 되었습니다.

 

문자열 관련 풀이를 하게 될때는 문자열 메서드와 정규표현식을 이용해야겠습니다.

 

 

배운점

 

 

많이 풀이한 부분 장점은 아래와 같습니다.

 

1. 정규표현식 체이닝을 사용하여 가독성이 좋습니다.

2. 필요없는 변수사용 및 조건, 반복문등이 적습니다

3. 내장 메서드를 사용하였습니다.

 

padEnd라는 string 메서드를 통해 string 뒷부분을 채웠습니다.

 

아예 string 메서드 없이 정규표현식으로 $1$1$1 문법을 사용한게 눈에 들었습니다.

 

 


문자열 / parsing / 정규표현식 문제는 코테 1번문제 정도의 난이도라고 생각하여 숙련도가 중요하다고 생각됩니다.

반응형

'2.알고리즘 > 프로그래머스' 카테고리의 다른 글

[JS]소수 만들기  (0) 2022.08.19
[JS] 프로래머스 숫자 문자열과 영단어  (0) 2022.08.05
빅오 표기법(Big-o Notation)  (0) 2022.04.14
[JS] 프로그래머스 K번째 수  (0) 2021.06.24
[JS]음양 더하기  (0) 2020.02.04