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

윤상일·2022년 7월 17일
0

프로그래머스 Lv.1

목록 보기
14/15
post-thumbnail

문제 설명

신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, "네오"가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.
자세한 설명은 아래의 링크를 참고하여주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/72410

입출력 예

나의 코드

function solution(new_id) {
    var temp = [];
    var id =  new_id.toLowerCase();
    var result = '';

    for(var i=0; i<id.length; i++){//1
        var ascii = id.charCodeAt(i);
        if((ascii>=97 && ascii<=122) || (ascii>=48 && ascii<=57) || (ascii>=45 && ascii<=46) || ascii === 95){
            if(ascii === 46 && id.charCodeAt(i+1)===46){
                continue;
            }
            else if(ascii === 46 && temp[temp.length-1]==='.'){
                continue;
            }
            else{
                temp.push(id[i]);
            }
        }
    }
   //2
    temp[0] == '.' ? temp[0]='':false;
    temp[temp.length-1] == '.' ? temp[temp.length-1]='':false;

    result = temp.join('');
    //3
    if(result.length <= 2){
        if(result.length == 0){
            result = 'aaa';
        }
        else{
            while(result.length < 3){
                result += result[result.length-1];
            }
        }
    }
    else{
        if(result.length>15){
            result = result.substr(0,15);
            while(result[result.length-1] == '.'){
                 result = result.substr(0,result.length-1);
            }
        }
    }

    return result;
}

1. 문제 풀이

처음 for문에서는 남겨야할 문자의 아스키코드를 이용하여 temp배열에 push를 해주었고
여기서 문자 ‘.’은 아스키코드가 46인데 if ... else if문으로 .이 중복되어 들어가는 것을 방지했습니다.
첫번째 for문이 끝나고 주석 2부분에서 temp의 양 끝단에 . 이 있는 경우 제거하도록 하였고
join 메소드를 이용해 배열을 문자열로 반환하여 result변수에 넣어주었습니다.
그리고 3번 주석부터 문자열의 길이를 비교하여 조건에 맞게끔 문자열을 조정해준 후
result를 반환해주었습니다.
profile
멋있는 개발자를 꿈꾸는 코린이

0개의 댓글