문제 출처: https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
내가 푼 문제풀이
function solution(new_id) {
var answer = "";
new_id = new_id.toLowerCase();
new_id = new_id.replace(/[^a-z0-9-_.]/g, "");
// new_id = new_id.replace("..", ".");
new_id = new_id.replace(/\.+/g, ".");
new_id = new_id.replace(/^\./, "");
new_id = new_id.replace(/\.$/, "");
if (new_id == "") {
new_id = new_id + "a";
}
if (new_id.length >= 16) {
new_id = new_id.substring(0, 15);
}
new_id = new_id.replace(/\.$/, "");
if (new_id.length <= 2) {
let last = new_id.charAt(new_id.length - 1);
while (new_id.length < 3) {
new_id = new_id + last;
}
}
// new_id.some(i => ["-","_","."].includes(i))
answer = new_id;
return answer;
}
console.log(solution("...!@BaT#*..y.abcdefghijklm"));
다른 사람들의 풀이에서 배울점
정규표현식
\w : word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다.
/g: Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다.
| : 정규표현식 안에서 또는 사용
/^$/ : 공백을 표현
.slice(0, 15).replace(/\.$/, ''); : 0부터 15번째 글자까지 공백으로 대체
repeat : 문자열 값 반복함
padEnd : 현재 문자열에 인수로 지정된 길이만큼 지정 문자로 채워 새로운 문자열로 반환
'코딩테스트 준비' 카테고리의 다른 글
백준 10171 node.js (0) | 2021.09.13 |
---|---|
프로그래머스 음양더하기 (0) | 2021.09.07 |
프로그래머스 위클리 챌린지 2 (0) | 2021.08.28 |