function solution(new_id) {
var answer = new_id.toLowerCase()
.replace(/[^a-z0-9._-]/gm,"")//소문자,숫자,._- 외에 제거
.replace(/[.]+/gm, '.')//.이 1개이상일때 1개로 replace
.replace(/^[.]/,"")//.이 처음에 올때 제거
.replace(/[.]$/gm,"")//.이 마지막에 올때 제거
.replace(/^$/gm,"a")//빈 문자열일때 a 대입
.slice(0,15) //길이 15이하로 slice
.replace(/^[.]/,"")//slice 후에 .으로 시작하면 제거
.replace(/[.]$/gm,"")//slice 후에 .으로 끝나면 제거
const getTree = (id)=>id.length==2 ?id+id[1]: id.length==1?id+id[0]+id[0] : id
//길이가 1 또는 2일때 3이 되도록 a 추가
return answer===""?"aaa": getTree(answer);
}
문제 자체는 어렵지 않은데 정규식을 잘 알아야만 풀 수 있는 문제였다
정규식 공부하기 좋은 문제군 ㅎㅎ
.이 2개 이상일때 무조건 1개로 만들어야하는데 3개 이상인 경우도 있다는 것을 고려하지않아
문제를 해결하는데 오래 걸렸다
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 같은 숫자는 싫어 js javascript (1) | 2024.05.09 |
---|---|
[프로그래머스 / dfs ] 타겟 넘버 js javascript (0) | 2024.05.07 |
[프로그래머스] 문자열 나누기 javascript js (0) | 2024.04.18 |
[프로그래머스] 체육복 javascript js (0) | 2024.04.18 |
[프로그래머스]개인정보 수집 유효기간 javascript (2) | 2024.04.12 |