문제 설명
카카오에 입사한 신입 개발자 네오는 "카카오계정 개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당 하게 되었습니다. "네오"에게 주어진 첫 임무는 새로 가입하는 유저들이 카카오 아이디 규칙에
맞지 않는 아이디를 입력할 경우, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는
것입니다.
다음 카카오 아이디 규칙 입니다.
- 아이디의 길이는 3자이상 15자 이하일 것
- 아이디는 알파벳 소문자, 숫자, 뺴기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있스빈다.
- 단, 마침표(.)은 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.
function solution(new_id)
먼저 아이디를 만들기 위해 solution이라는 function 에게 new_id를 할당해 줍니다.
// 상수 값으로 answer를 new_id에 할당
const answer = new_id
.toLowerCase()
.replace(/[^\w-_.]/g, '')
.replace(/\.{2,}/g, '.')
.replace(/^\.|\.$/g, '')
.replace(/^$/, 'a')
.slice(0, 15).replace(/\.$/, '');
그런뒤 아이디 규칙을 생성할 곳에 상수값으로 new_id를 할당해줍니다.
.toLowerCase()
먼저 아이디의 규칙은 소문자가 들어가며 이것은 .toLowerCase()라고 선언할 수 있습니다. 문자열을 소문자로 변환해주면서 반환해주는 함수 입니다.
.toUppercase()
반대로 소문자에서 대문자로 반환해주려면 toUpperCase()를 사용해주면 되죠!!
.replace(/[^\w-_.]/g, '')
이제 아이디를 추천받는 곳에 규칙을 설정해야 하는데 우리는 이것은 정규 표현식 이라 부릅니다.
정규 표현식이란 문자열을 나타내는 특정 문자 조합과 대응하기 위해 사용하는 패턴입니다.
개별 숫자- /[0-9]/g
-전체에서 0~9사이에 아무숫자 '하나'를 찾음
개별 문자 - /[to]/g
-전체에서 t혹은 o를 모두 찾음
출처: https://koras02.tistory.com/59 [Koras02코딩웹]
정규 표현식은 이렇게 숫자를 조건으로 하거나 단어를 조건으로 정규표현식을 적용할 수 있습니다.
더 다양하게 하고 싶다면 코드를 좀더 길게 표현할 수 있습니다.
.replace(/[^\w-_.]/g, '')
먼저 시작을 알파벳을 소문자로 하기위해 \^w-를 넣어 소문자 규칙을정해줍니다. 그런 뒤 빼기(-)를 추가해주고
그곳에 밑줄(_) 마침(.)표 조합을 치환해줍니다. 그다음 규칙으로 설정한 것 외 모든 문자를 제거하기위해서
두번째 칸에는 ''을 포함시켜줍니다. 이렇게 하면 첫번째 규칙 외에는 아무런 규칙도 적용되지 않습니다.
.slice(0, 15).replace(/\.$/, '');
마지막으로 입력한 길이가 총 16자 이상이면 new_id 15개를 제외한 나머지 문자를 모두 제거 해줘야합니다.
이것은 slice를 사용햐 16자 이상으로 규칙은 선언 해줍니다.
순서대로 정규표현식을 정리하자면
- ^ : 문장의 시작
- $ : 문자의 끝
- \w : word 문자
- .{2,}: . 이 최소 2개이상
- | : 또는
'etc. > Algorithm' 카테고리의 다른 글
[알고리즘 테스트] 완주하지 못한 선수 (0) | 2022.01.13 |
---|---|
[알고리즘 테스트] 부족한 금액 계산하기 (0) | 2022.01.13 |
[알고리즘 테스트] 숫자 문자열과 영단어 (0) | 2022.01.13 |