본문 바로가기
코딩 문제/프로그래머스 [ JavaScript ]

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

by CODESIGN 2022. 12. 14.

https://school.programmers.co.kr/learn/courses/30/lessons/12948

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제 설명


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

 

 

제한 조건


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

 

 

입출력 예


 

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

 

 

나의 풀이


repeat()을 사용하여 *을 주어진 전화번호 길이에서 네 자리를 뺀 만큼의 개수만큼 반복해 주었다. 그리고 마지막 번호 4자리를 splice()를 통해 가져와 별의 문자열과 함께 합쳐주었다.

 

function solution(phone_number) {
    return '*'.repeat(phone_number.length-4)+phone_number.split("").splice(-4).join("");
}

 

 

 

다른 풀이


나는 splice()를 사용했는데 splice는 배열을 사용해야 해서 split("")으로 배열로 만들어준 뒤 마지막에 문자열로 반환하기 위해 join("")을 해주었다. 하지만 이 풀이에서는 splice를 사용하였다. 굳이 split("")과 join("")을 쓰지 않고도 문자열에서 원하는 부분을 가져올 수 있어서 앞으로 잘 사용해 봐야겠다.

 

function solution(s){
  return "*".repeat(s.length - 4) + s.slice(-4);
}

 

 

 

정규식 사용한 풀이


비록 효율성면에서는 조금 뒤처지지만 정규식으로 풀어낸 방법이 좋은것 같아 메모해 두었다.

 

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

 

 

 

댓글