코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
정규표현식은 배워놔도 안쓰다보면 자꾸 까먹게된다. 같은걸로 몇번을 검색해보는건지..
아래는 내가 짠 코드
function solution(new_id) {
new_id = new_id.toLowerCase();
new_id = new_id.replace(/[^a-zA-Z0-9._-]/gi, "")
new_id = new_id.replace(/\.{2,}/g, ".")
if (new_id.match(/\.$/g)) {
new_id = new_id.slice(0,-1);
}
if (new_id.match(/^\./g)) {
new_id = new_id.slice(1);
}
if (!new_id) {
new_id = "a"
}
if (new_id.length >= 16) {
new_id = new_id.slice(0, 15)
if (new_id.match(/\.$/g)) {
new_id = new_id.slice(0,-1);
}
} else if (2 >= new_id.length) {
for (let i = 0; (3 - new_id.length) >= i; i++) {
new_id = new_id.concat(new_id[new_id.length-1])
}
}
console.log(new_id)
return new_id;
}
console.log(solution("...!@BaT#*..y.abcdefghijklm"))
console.log(solution("z-+.^."))
console.log(solution("=.="))
console.log(solution("123_.def"))
console.log(solution("abcdefghijklmn.p"))
테스트 통과를 받고나서 알게된 효율적인 코드
function solution(new_id) {
const answer = new_id
.toLowerCase()
.replace(/[^\w-_.]/g, '') // 2
.replace(/\.+/g, '.')
.replace(/^\.|\.$/g, '')
.replace(/^$/, 'a')
.slice(0, 15).replace(/\.$/, '');
const len = answer.length;
return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
코드가 3배 이상 줄어든다..
풀긴 풀었는데 상당히 비효율적으로 푼거같다.
소요시간은 약 2시간 (중간에 딴짓하느라 시간 많이 까먹었다.)
'프로그래밍 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 프린터 (0) | 2021.04.08 |
---|---|
프로그래머스 124 나라의 숫자 (0) | 2021.04.08 |
Github Action사용법 + Push하면 바로 deploy 되게 하기 (0) | 2021.04.06 |
프로그래머스 KAKAO 2019 문제 - 오픈채팅방 (0) | 2021.04.03 |
프로그래머스 KAKAO 2019 문제 - 크레인 인형 뽑기 (0) | 2021.04.02 |