티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
해결 방법
1. 단계별로 알맞은 메소드와 정규표현식 사용
풀이
function solution(new_id) {
var answer = new_id
.toLowerCase() //1
.replace(/[^a-z0-9-._]/g, '') //2
.replace(/\.+(?=\.)/g,'') //3
.replace(/^\.|\.$/g, '') //4
.replace(/^$/g, 'a'); //5
if (answer.length >= 16){
answer = answer.substr(0,15).replace(/\.$/g, ''); //6
}
if (answer.length <= 2){
while (answer.length < 3){
answer = answer.concat(answer[answer.length-1]); //7
}
}
return answer;
}
배운 점
1. 정규표현식
- [A-Za-z0-9_] (영문자, 숫자, 언더바)는 \w와 같다, 따라서 2번째는 .replace(/[^\w-.]/g, '') 도 가능하다
- 3번째는 연속된 점들을 맨 마지막 하나의 점을 제외하고 빈 문자 처리하는 것으로 .replace(/\.+/g, '.') 도 가능하다
- [^문자]는 괄호안의 문자를 제외한 것, ^문자는 특정 문자열로 시작하는 것
- 문자$는 특정 문자열로 끝나는 것
- | 는 or를 말한다
[JS] 📚 정규식 (RegExp) - 누구나 이해하기 쉽게 정리
정규표현식(Regular Expression) 정규표현식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용합니다. - 각각 다른 포맷으로 저장된 엄청나게 많은 전화번호 데이터를 추출
inpa.tistory.com
2. substr, substring, slice의 차이
- substr은 시작 인덱스부터 원하는 길이만큼 문자열을 잘라서 반환
- substring은 시작 인덱스와 마지막 인덱스-1까지 문자열을 잘라서 반환
- slice와 substring은 사용법이 같다
substr(여기서부터, 몇 개)
substring(여기서부터, 여기-1까지)
slice(여기서부터, 여기-1까지)
3. padEnd 메소드
마지막 7번을 나는 while문을 사용해 길이가 3이 될 때까지 마지막 문자를 추가하는 것으로 하였으나,
다른 사람의 풀이를 보며 padEnd라는 메소드를 알게 되었다
따라서 .padEnd(3, answer[answer.length-1]) 도 가능하다
padEnd(목표하는 문자열 길이, 추가할 문자)
목표 문자열의 길이가 될 때까지 오른쪽에 해당 문자를 더한 문자열을 리턴한다
목표 문자열의 길이보다 이미 문자열의 길이가 길면 채우지 않고 그냥 리턴한다
'JS-algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 체육복 (javascript) (0) | 2022.05.04 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 (javascript) (0) | 2022.05.01 |
[프로그래머스] K번째 수 (javascript) (0) | 2022.04.30 |