[자바스크립트/알고리즘] 프로그래머스-핸드폰 번호 가리기
728x90

문제

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

 

제한 조건

s는 길이 4 이상, 20이하인 문자열입니다.

 

나의 풀이

예시) '01033334444' -> '*******4444'

function solution(phone_number) {
    var answer = '';
    answer = phone_number.slice(0,phone_number.length-4);

    for(let i = 0; i<answer.length;i++){
      answer = answer.replace(answer[i], "*");
    }
  return answer + phone_number.slice(phone_number.length-4);
}

우선 answer에 phone_number에서 slice한 0103333를 넣는다.

그리고 반복문을 돌리면서 각 자리 수를 *로 바꾼다.

*로 바꾸어진 answer과 phone_number의 마지막 4자리를 반환한다.

 

 

이 문제를 정규식으로 풀 수 있겠다 싶었지만 아직 정규식에 대한 지식이 모자라 풀지 못 했다.

위의 방식으로 해결하고 난 뒤 다른 사람의 풀이를 보니 정규식 풀이법이 있었다.

 

function hide_numbers(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}

0~9의 수(\d) 뒤에 4자리의 0~9의 수가 오는 숫자를 *로 변환한다.

풀이를 보면 이해가 되는데 직접 정규식을 만들지 못해서 슬프다... 더 노력해야겠다.

320x100