Programmers 프로그래머스 코딩테스트 연습 - 핸드폰 번호 가리기 (JavaScript)
Programmers의 코딩테스트 연습문제 Level 1의 핸드폰 번호 가리기 문제를 JavaScript를 사용하여 문제를 풀어보도록 하겠습니다.
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
작성한 답
solution.js
function solution(phone_number) {
return phone_number.replace(/\d(?=\d{4})/g, "*");
}
설명
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성하는 문제입니다.
이러한 문자열 처리하는 문제는 언제나 그렇듯 정규표현식을 먼저 떠올리고 정규표현식으로 해결하는 것이 가장 깔끔하게 문제를 해결할 수 있습니다.
전화번호 문자열이 담긴 phone_number을 정규식을 사용해 마지막 숫자 4자리를 제외한 모든 숫자를 매칭시켜 '*' 문자로 바꿔주면 문제를 아주 쉽게 해결할 수 있습니다.
마지막 숫자 4자리를 제외한 모든 숫자를 매칭시키는 정규식은 /\d(?=\d{4})/g 입니다.
위 정규식을 간단하게 설명드리도록 하겠습니다.
먼저 정규식은 두개의 / 사이에 작성합니다.
\d는 숫자를 의미합니다. [0-9]와 같은 의미입니다.
그리고 숫자를 의미하는 \d 뒤에 () 소괄호를 사용하여 하위식으로 패턴을 지정해줄겁니다.
소괄호 안에 전방탐색을 의미하는 ?= 을 사용하고 그 뒤에 숫자 4자리를 의미하는 \d{4} 를 붙여
결국 (?=\d{4}) 로 숫자 네자리로 끝나는 문자열의 앞부분들을 의미합니다.
결국 /\d(?=\d{4})/ 는 숫자 네자리로 끝나는 문자열의 앞의 숫자들을 의미하며,
이대로만 작성해도 되겠다 하실 수 있지만 마지막 / 뒤에 발생할 모든 패턴에 대한 전체 검색을 뜻하는 플래그인 g를 붙여줘야합니다.
왜냐하면, 플래그 g를 붙여주지 않고 /\d(?=\d{4})/ 로만 replace를 하게 되면,
입출력 예의 "01033334444" 로 예를 들었을때, *1033334444" 라는 값을 return 합니다.
그 이유는 맨 앞의 "0"만 봐도 "1033"이라는 4개의 숫자 앞에 있는 숫자 이기 때문이죠,
그래서 "0", "01", "010", "0103", "01033", "010333", "0103333" 의 모든 패턴이 매칭될 수 있도록 플래그 g를 붙여
/\d(?=\d{4})/g 로 사용해 주셔야 합니다. 아래의 제가 쓴 글을 참고해주시면 좋을 것 같습니다.
그리고 매칭되는 패턴을 replace() 함수로 "*"을 변경해주시면 됩니다.
제가 틀린 부분이 있다거나 더 좋은 방법을 아시는 분이 계시다면 댓글로 공유 부탁드립니다!
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 프로그래머스 코딩테스트 연습 - 문자열을 정수로 바꾸기 (JavaScript) (0) | 2020.09.06 |
---|---|
Programmers 프로그래머스 코딩테스트 연습 - 짝수와 홀수 (JavaScript) (0) | 2020.09.05 |
Programmers 프로그래머스 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 (JavaScript) (0) | 2020.09.03 |
Programmers 프로그래머스 코딩테스트 연습 - 제일 작은 수 제거하기 (JavaScript) (0) | 2020.09.02 |
Programmers 프로그래머스 코딩테스트 연습 - 정수 내림차순으로 배치하기 (JavaScript) (0) | 2020.09.01 |
댓글