728x90
반응형

2021.07.17

문제명 : 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천

사용언어 : Javascript

개발 시간 : 50분

 

 

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

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

programmers.co.kr

 

📋 문제 설명

복잡해보이지만 주어진 규칙을 순서대로 적용해주면 되는 문제입니다.

 

📢 입출력 예

 

🔑 문제 풀이

function solution(new_id) {
    var answer = '';
    
    new_id = new_id.toLowerCase();  // 1. 소문자로 치환
    new_id = new_id.replace(/[^a-z0-9-._]/gi, ''); // 2. 특정문자 외 제거

    // 3단계 : 연속된 . 하나로 치환
    var str = '';
    for(var i=0; i<new_id.length; i++){
        if(new_id[i] == '.' && new_id[i-1] == '.'){
            str += '';
        }else{
            str += new_id[i];
        }    
    }
    new_id = str;
   
    // 4단계 : . 처음 또는 끝일 경우 제거
    new_id = four(new_id);
    
    // 5단계
    if(new_id == '') new_id = 'a';
   
    // 6단계
    if(new_id.length>15) new_id = new_id.substring(0,15);
    new_id = four(new_id);
        
    // 7단계
    new_id = seven(new_id);

    answer = new_id;
    return answer;
}

function four(new_id){
    if(new_id.substring(0,1) == '.') new_id = new_id.slice(1);
    if(new_id.substring(new_id.length-1) == '.') new_id = new_id.substring(0,new_id.length-1);
    
    return new_id;
}

function seven(new_id){
    if(new_id.length < 3){
        new_id = new_id + new_id.substring(new_id.length-1);
        return seven(new_id);
    }else{
        return new_id;
    }
}

 

🔔 새로 알게 된 점

문제가 어렵지는 않았으나 정규식 부분에서 시간이 많이 잡힌 것 같습니다.

/[^a-z0-9-._]/gi 에서

^~ : ~를 제외하고

a-z : a부터 z까지

0-9 : 0부터 9까지

-._ 등등 : 해당 문자열

728x90
반응형

+ Recent posts