신규 유저가 입력한 아이디를 나타내는 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;
}
처음 for문에서는 남겨야할 문자의 아스키코드를 이용하여 temp배열에 push를 해주었고
여기서 문자 ‘.’은 아스키코드가 46인데 if ... else if문으로 .이 중복되어 들어가는 것을 방지했습니다.
첫번째 for문이 끝나고 주석 2부분에서 temp의 양 끝단에 . 이 있는 경우 제거하도록 하였고
join 메소드를 이용해 배열을 문자열로 반환하여 result변수에 넣어주었습니다.
그리고 3번 주석부터 문자열의 길이를 비교하여 조건에 맞게끔 문자열을 조정해준 후
result를 반환해주었습니다.