본문 바로가기

⏳ 알고리즘/JavaScript 알고리즘

프로그래머스 - LV1. 신규 아이디 추천(카카오 2021 블라인드 채용)

문제

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

 

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

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

programmers.co.kr

 

코드

function solution(new_id) {
    var answer = '';
    
    //1단계, 2단계
    new_id = new_id.replace(/[^0-9A-Za-z._-]/g, '').toLowerCase()

    //3단계
    while (new_id.includes('..')){
        new_id = new_id.replace("..", ".")
    }
    
    //4단계
    if (new_id[0] === ".") {
        new_id = new_id.slice(1, new_id.length-1);
    }
    if (new_id[new_id.length-1] === ".") {
        new_id = new_id.slice(0, new_id.length-1);
    }
    
    //5단계
    if (new_id.length == 0) return "aaa"
    
    //6단계, 7단계
    if (new_id.length >= 16) {
        if (new_id[14] === "."){
            return new_id.slice(0, 14); 
        } else return new_id.slice(0, 15); 
    } 
    else if (new_id.length <= 2){
        while (new_id.length < 3) new_id += new_id[new_id.length-1]
    }
    
    return new_id;
}

 

- 4단계에 startsWith(), endsWith()를 이용

function solution(new_id) {
    var answer = '';
    
    //1단계, 2단계
    new_id = new_id.replace(/[^0-9A-Za-z._-]/g, '').toLowerCase()

    //3단계
    while (new_id.includes('..')){
        new_id = new_id.replace("..", ".")
    }
    
    //4단계
    if (new_id.startsWith('.'))
        new_id = new_id.slice(1);
    if (new_id.length > 1 && new_id.endsWith('.'))
        new_id = new_id.slice(0, -1);
    
    //5단계
    if (new_id.length == 0) return "aaa"
    
    //6단계, 7단계
    if (new_id.length >= 16) {
        if (new_id[14] === "."){
            return new_id.slice(0, 14); 
        } else return new_id.slice(0, 15); 
    } 
    else if (new_id.length <= 2){
        while (new_id.length < 3) new_id += new_id[new_id.length-1]
    }
    
    return new_id;
}