https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=javascript
제출코드
function solution(new_id) {
let result = new_id.toLowerCase(); // 1단계
result = result.replace(/[^a-z0-9-_.]/g, "") //2단계
const arr = result.split("")
result = arr.filter((e, i, array) => {
if(e === '.'){
return e != array[i-1]
}else{
return e
}
}).join("")
const first_char = result.substring(0, 1);
const last_char = result.charAt(result.length-1);
if(first_char === "."){
result = result.slice(1, result.length);
}
if(last_char === "."){
result = result.slice(0, result.length-1);
}
if(result === ""){
result = "a"
}
if(result.length >= 16){
result = result.slice(0, 15)
const last_char = result.charAt(result.length-1);
if(last_char === "."){
result = result.slice(0, result.length-1);
}
}
if(result.length <= 3){
const last_char = result[result.length-1]
while(result.length <= 2){
result = result + last_char
}
}
return result
}
문제의 단계에 따라 한가지씩 풀이하였습니다.
풀이를 하고나서는 정규표현식을 안쓸 수 없었고, 다른 사람의 풀이와 비교한 결과
정규표현식으로 하면 코드를 간단하고 가독성 좋게 짤 수 있다는 장점을 이해하게 되었습니다.
문자열 관련 풀이를 하게 될때는 문자열 메서드와 정규표현식을 이용해야겠습니다.
배운점
많이 풀이한 부분 장점은 아래와 같습니다.
1. 정규표현식 체이닝을 사용하여 가독성이 좋습니다.
2. 필요없는 변수사용 및 조건, 반복문등이 적습니다
3. 내장 메서드를 사용하였습니다.
padEnd라는 string 메서드를 통해 string 뒷부분을 채웠습니다.
아예 string 메서드 없이 정규표현식으로 $1$1$1 문법을 사용한게 눈에 들었습니다.
문자열 / parsing / 정규표현식 문제는 코테 1번문제 정도의 난이도라고 생각하여 숙련도가 중요하다고 생각됩니다.
반응형
'2.알고리즘 > 프로그래머스' 카테고리의 다른 글
[JS]소수 만들기 (0) | 2022.08.19 |
---|---|
[JS] 프로래머스 숫자 문자열과 영단어 (0) | 2022.08.05 |
빅오 표기법(Big-o Notation) (0) | 2022.04.14 |
[JS] 프로그래머스 K번째 수 (0) | 2021.06.24 |
[JS]음양 더하기 (0) | 2020.02.04 |