코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
나의풀이
function solution(new_id) {
let answer = '';
// input : string type
//step1
let step_1 = new_id.toLowerCase();
let step_arr = [...step_1]
//step2 정규식 사용
let pattern_num = /[0-9]/;
let pattern_eng = /[a-zA-Z]/;
let step_2 = step_arr.filter(val=>{
if(pattern_eng.test(val)||pattern_num.test(val)||val === '-'|| val === '_'|| val==='.') {
return true
} else {
return false
}
})
console.log(step_2)
//step3 reduce활용
//let step_3 = step_2.reduce((acc,cur)=>acc.includes(cur) ? acc : [...acc,cur],[])
//step3 for
let step_3=[];
for(let i=0;i<step_2.length;i++){
for(let j=1;j<step_2.length;j++){
if(step_2[i]==='.'&&step_2[j]==='.'){
} else {
}
}
}
console.log(step_3)
return answer;
}
보는 것과 같이 지저분하고 step_3에서 막혔다.
해당 문제는 한시간 정도 풀이에 도전하다가 다른 풀이를 찾았다.
// 정규식을 활용하면 간단히 풀 수 있는 문제지만 정규식 알지 못하면 매우 어렵게 느껴졌다.
2. 다른 사람의 풀이
function solution(new_id) {
let answer = new_id.toLowerCase()
.replace(/[^a-z0-9-_.]/gi, '')
.replace(/[.]{2,}/gi, '.')
.replace(/^[.]|[.]$/gi,'');
if(answer==='') answer = 'a';
if(answer.length > 15){
answer = answer.substring(0, 15);
answer = answer.replace(/[.]$/gi,'');
}
while(answer.length < 3){
answer += answer[answer.length-1];
}
return answer;
}
정규식에 대해 제대로 공부하고 블로그에 포스팅 할 예정이다.
공부할게 많다...
'코딩테스트(알고리즘)' 카테고리의 다른 글
[백준] javascript vscode에서 풀기 (0) | 2022.05.04 |
---|---|
[프로그래머스] 신고 결과 받기_Javascript (0) | 2022.05.02 |
[Javascript] 백준 문제 풀이 준비 (0) | 2022.04.29 |
[프로그래머스] 로또의 최고 순위와 최저 순위_Javascript (0) | 2022.04.27 |
[프로그래머스] 숫자 문자열과 영단어_Javascript (1) | 2022.04.26 |