Algorithm/Programmers
[JS][프로그래머스LV1]신규 아이디 추천
JaeKwan
2021. 9. 3. 00:10
문제 번호
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
알고리즘 분류
문제 풀이
해당 문제는 특별한 알고리즘을 요구하진 않는다. 다만 여러단계에 거쳐서 문제에서 요구한 구현을 해야하기 때문에 메서드와 정규식을 다양하게 알고있으면 도움이 됐던 문제였다.
전체코드
function solution(new_id) {
var answer = '';
// 1단계
new_id = new_id.toLowerCase();
// 2단계
for(let i=0; i<new_id.length; i++){
if( 'a'<= new_id[i] && new_id[i] <='z'){
answer += new_id[i];
}
else if( '0' <= new_id[i] && new_id[i] <= '9'){
answer += new_id[i];
}
else if(new_id[i] === '-' || new_id[i] === '_' || new_id[i] === '.'){
answer += new_id[i];
}
}
// 3단계
answer = answer.replace(/\.{2,}/g, '.');
// 4단계
if(answer[0] === '.')
answer = answer.slice(1,answer.length)
if(answer[answer.length-1] === '.')
answer = answer.slice(0,answer.length-1);
// 5단계
if(answer === '')
answer += 'a';
// 6단계
if(answer.length >= 16){
answer = answer.slice(0,15);
if(answer[answer.length-1] === '.')
answer = answer.slice(0, answer.length-1);
}
console.log(answer);
// 7단계
if(answer.length <= 2){
while(1){
answer += answer[answer.length-1]
if(answer.length >= 3)
break;
}
}
console.log(answer)
return answer;
}
특이사항
다른분들의 풀이를 보니 padEnd 와 repeat를 사용하는 모습도 볼 수 있었다.
프로그래머스의 1lv 문제를 모두 풀었다.