프로그래머스[Level 1] 핸드폰 번호 가리기

문제

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

제한 사항

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

입출력 예

풀이

function solution(phone_number) {
    let arr = phone_number.split("");
    let n = arr.length;
    for(let i=0; i<n-4;i++){
        arr[i] = "*";
    }
    return arr.join("");
}
  • 문자열을 배열로 바꿔준 후 뒷 4자리를 제외한 요소를 *로 바꿔준다.
  • 반환할 땐 다시 문자열로 만들어서 반환한다.

다른 풀이

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

정규 표현식과 replace 메서드를 이용한 풀이

정규표현식

특정 패턴의 문자열을 찾기 위한 식. /이안에 사용한다./

예시

/대/ : 대를 하나만 찾는다.
/한/g : 한을 모두 찾는다. g(global)을 의미한다.
/[0-9]/g : 숫자 0~9를 모두 찾는다.
/[a-zA-Z]/g : 영어알파벳 대문자/소문자를 모두 찾는다.
/[^0-9]/g : 숫자0~9가 아닌 것을 모두 찾는다. ^(NOT)을 의미한다.

해석

\d : 숫자.
\D : 숫자가 아닌 것.
\d(?=\d{4})g 뒤에 4자리의 숫자를 제외한 모든 숫자를 의미한다.

("문자열").replace(/정규표현식/, "대체문자열")
이번 문제에서 사용한 패턴이다.

정규표현식 정보 출처
https://curryyou.tistory.com/234 [카레유]

좋은 웹페이지 즐겨찾기