프로그래머스 Lv.1 핸드폰 번호 가리기

Lian Kim·2022년 8월 28일
0

coding-test

목록 보기
16/19

핸드폰 번호 가리기


문제

문제 설명

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


제한 사항

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

입출력 예

phone_numberreturn
"01033334444""*******4444"
"027778888""*****8888"



풀이

나의 풀이

  1. phone_number에서 숫자를 보여줄 4만큼을 뺀 길이만큼 "*"을 반복해준다.
  2. slice 메서드는 음수 인덱싱이 가능하므로 마지막에서 네 번째부터 끝까지 자른다.
  3. 1, 2의 결과를 붙여 return
function solution(phone_number){
  return "*".repeat(phone_number.length - 4) + phone_number.slice(-4);
}

다른 사람들의 풀이

정규표현식에 아주 조금은 익숙해졌다고 생각했는데 ?=는 처음 보았다. 찾아봤더니 ?=는 전방탐색의 기호로, 기호 다음에 기준이 될 패턴 문자열이 오는 하위표현식이라고 한다. 괄호 안에서 사용하는데 쉽게 말하면 괄호 안의 ?= 다음에 오는 패턴과 일치하기 직전까지의 문자열을 추출하는 것이다.

  • \d: 숫자
  • ?=: 다음에 오는 패턴을 찾아 그 패턴 직전까지만 추출
  • \d{4}: 숫자 네자리

-> 뒤에 숫자 네개가 있는 숫자 (마지막에서 다섯번째 숫자까지만 뒤에 숫자 네개를 가질 수 있음)

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



WIL

정규표현식 전후방탐색 (look-around)

0개의 댓글