programmers 코딩테스트 : 핸드폰 번호 가리기

핸드폰 번호 가리기

문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.


첫번째 풀이

<script>
function solution(str) {
	let answer = "";
	let strLength = str.length - 4; // 숫자
	let strCut = str.slice(0, strLength); //숫자 > 별까지의 str
	let star = "*"; 
	answer = str.replace(strCut, star.repeat(strLength)); 
	return answer;
}
</script>
  1. 전화번호의 뒷 4자리를 제외한 나머지 숫자를 노출하기 위해 slice로 첫번째부터 strLength까지 자르기
  2. answer에 replace()로 자른 숫자를 star로 strLength만큼 노출되게 만들기

str.slice(시작, 끝)
📌 문자열을 시작과 끝까지 추출해 새로운 문자열 반환함
📌 시작하는 index는 0부터 시작하고, 음수부터 시작하는 경우 strLength(문자열 길이) + 시작으로 나옴
📌 시작 index가 전체 문자열의 길이보다 크거나 같은 경우 빈 문자열을 반환하고, 끝 index가 없다면 문자열의 마지막까지 추출

repeat(반복 횟수)
📌 주어진 횟수만큼 반복해서 붙인 새로운 문자열을 반환한다.

두번째 풀이

<script>
function solution(phone_number) {
    answer = phone_number.replace(/\d(?=.{4})/g, '*');
    return answer;
}
</script>

정규식을 사용한 풀이 방법 /\d(?=.{4})/g : 숫자 뒷자리 4개 제외하고 / 모두 찾은 후 replace *

정규식 만드는 사이트 : https://regexr.com/

좋은 웹페이지 즐겨찾기