오늘 푼 문제
1. 신규 아이디 추천 / Lv.1 / 시간 : 32분
programmers.co.kr/learn/courses/30/lessons/72410
function solution(new_id) {
// 1. 소문자
new_id = new_id.toLowerCase();
// 2. 특수문자 제외
let regx = /[\(\)\=\/+\[\{\]\}~!@#$%^&*:?,<>]/g;
new_id = new_id.replace(regx,"");
// 3. 마침표 연속
let regx2 = /\.+/g;
new_id = new_id.replace(regx2,".");
// 4. 첫끝 마침표
new_id = new_id[0]==="."? new_id.slice(1) : new_id;
new_id = new_id[new_id.length-1]==="."? new_id.slice(0,-1) : new_id;
// 5. 빈문자열 a
if(!new_id.length){
new_id = "aaa";
return new_id;
}
// 6. 16자 이상
if(new_id.length>=16){
new_id = new_id.slice(0,15);
if(new_id[14]===".") new_id = new_id.slice(0,14);
return new_id;
}
//7. 2자 이하
if(new_id.length<=2){
let n = new_id.length;
while(new_id.length<3) new_id+=new_id[n-1];
}
return new_id;
}
다른 사람의 풀이
const solution = (new_id) => {
const id = new_id
.toLowerCase()
.replace(/[^\w\d-_.]/g, '')
.replace(/\.{2,}/g, '.')
.replace(/^\.|\.$/g, '')
.padEnd(1, 'a')
.slice(0, 15)
.replace(/^\.|\.$/g, '')
return id.padEnd(3, id[id.length-1])
}
굉장히 깔끔함. 그리고 padEnd라는 걸 알게되었다.
padEnd()
메서드는 현재 문자열에 다른 문자열을 채워, 주어진 길이를 만족하는 새로운 문자열을 반환합니다. 채워넣기는 대상 문자열의 끝(우측)부터 적용됩니다. 현재 문자열의 길이보다 작다면 채워넣지 않고 그대로 반환.
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 2021 카카오 공채 - 순위 검색 (0) | 2021.03.08 |
---|---|
[프로그래머스] 2021 카카오 공채 - 메뉴 리뉴얼 (0) | 2021.02.24 |
[프로그래머스] 2019카카오 겨울 인턴십 - 징검다리 건너기 (0) | 2021.02.09 |
[프로그래머스] 2019카카오 겨울 인턴십 - 불량 사용자 (0) | 2021.02.08 |
[프로그래머스] 2019카카오 겨울 인턴십 - 크레인 인형뽑기 / 튜플 (0) | 2021.02.04 |