코딩테스트 문제풀이/프로그래머스

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

itaeiou 2021. 9. 29. 14:15
반응형

 

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

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

정해진 규칙에 맞게 하나씩 처리하면 되는 간단한 문제

 

결과 코드

function solution(new_id) {    
    new_id = new_id.toLowerCase(); // 1단계
    new_id = new_id.replace(/[^0-9a-z\-_\.]/g, ""); // 2단계
    new_id = new_id.replace(/\.{2,}/g, "."); // 3단계
    new_id = new_id.replace(/^\.|\.$/g, ""); // 4단계
    if(new_id == "") new_id = "a"; // 5단계
    new_id = new_id.substring(0,15); // 6단계
    new_id = new_id.replace(/\.$/, ""); // 6단계
    while(new_id.length < 3) { // 7단계
        let s = new_id[new_id.length - 1];
        new_id = new_id + s;
    }    
    
    return new_id;
}

 

다른 풀이

체이닝으로 보다 깔끔하게 작성할 수 있다.

function solution(new_id) {
    const answer = new_id
        .toLowerCase() // 1
        .replace(/[^\w-_.]/g, '') // 2
        .replace(/\.+/g, '.') // 3
        .replace(/^\.|\.$/g, '') // 4
        .replace(/^$/, 'a') // 5
        .slice(0, 15).replace(/\.$/, ''); // 6
    const len = answer.length;
    return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
반응형