공부/알고리즘

[ JS 코딩테스트 ] 핸드폰 번호 가리기

신입개발자 2021. 6. 14. 18:40

문제 설명

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

제한 조건

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

입출력 예

phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

초기화면

function solution(phone_number) {
    let answer = '';
    return answer;
}

글쓴이 풀이

function solution(phone_number) {
    let answer = Array.from(phone_number);
    let x = answer.map((i, j) => j < answer.length-4 ? "*" : i);
    return x.join('');
}

다른 유저의 풀이

function hide_numbers(s) {
  // 정규식을 이용해서 뒤에서 4번째 까지 *로 표시합니다
  return s.replace(/\d(?=\d{4})/g, "*");
}

문제 풀이

phone_number 매개변수를 배열로 변환시키고 배열의 map내장 함수를 이용해 총길이와 비교해서 총길이의 -4까지 문자를 *로 변환시키고 변환시킨 값을 리턴할 때 join('')으로 문자열로 변환시켰습니다

느낀 점

정규식을 이용해서 문제를 푸는 건 생각지도 못했습니다