림찌의 개발일기 💻

[프로그래머스] 신규 아이디 추천 본문

알고리즘/Javascript

[프로그래머스] 신규 아이디 추천

림찌 🥰 2021. 10. 28. 02:28

 

 

해결 : 정규 표현식과 replace() 메서드를 이용하여 풀이한다.

 

 

1단계 :

toLowerCase() 메소드를 이용하여 대문자를 소문자로 치환

 

2단계 : 

replace() 메소드를 이용하여 문자열으로 치환해준다.

(/[^a-z0-9-_.]/g. '') ➡️ '[]': 이 안에 있는 정규표현식이 일치한다면 ''(빈 문자열) 를 반환해주라는 뜻.

 

3단계:

replace() 메소드를 이용하여 문자열으로 치환해준다.

(/\.+/g, '.')  ➡️ '.'(마침표) 는 정규표현식에서 어떤 문자든 상관없이 1개의 문자 자체를 뜻한다. 그래서 이를 마침표로 인식하기 위해서는 백슬러시를 사용해야한다. \. 은 마침표가 포함된 문자열을 찾으라는 뜻이고 뒤에 붙은 + 는 한개 이상이 포함되어 있을 때라는 뜻이다. 마침표가 한개 이상이면 한개로 바꿔달라는 뜻이다. `..` -> `.` 

 

4단계:

replace() 메소드를 이용하여 문자열으로 치환해준다.

(/^\.|\.$/g, '')  ➡️  '^' : 첫 번째 문자, '|' : 또는, '$' : 마지막 문자.

첫번째 문자가 마침표거나 마지막 글자가 마침표라면 빈문자열을 반환해달라는 뜻이다.

 

5단계:

if 문으로 빈 문자열일때는 answer의 값을 a 를 넣어주도록 함

 

6단계:

if 문으로 16자 이상일때 substring() 메소드를 이용하여 15번째 이후 문자열을 제거한다. 또한 마침표가 끝에 위치하면 그 마침표는 빈문자열로 치환한다.

substring() 메소드는 string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.

 

7단계:

while 문을 사용하여 조건문이 true가 될때까지..즉 마지막 글자가 3글자가 될때까지 추가해준다.

 

 


더 짧고 간결한 solution 도 있었다.

 

 

(/[^\w-_.]/g, '') ➡️ 'w' : a-z0-9 와 동일'

정규표현식과 slice() 메소드를 이용할수 있는 부분은 전부 answer 변수를 선언할때 메소드를 사용해주고

예외처리를 해야하는 마지막 글자가 세글자가 될때까지 추가해줘야 하는 부분은 answer 의 길이를 변수로 설정해주고

삼항연산자를 이용해 2글자보다 길면 answer 을 그래도 반환해주고 아니면 charAt() 메서드와 repeat() 메서드를 이용하여 문자열을 반환한다.

 

charAt() 
함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환합니다. 

repeat()
 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다. 
str.repeat(count);

 

'알고리즘 > Javascript' 카테고리의 다른 글

[프로그래머스] 같은 숫자는 싫어  (0) 2021.11.16
Comments