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

stella·2023년 2월 2일
0

Algorithm

목록 보기
38/40
post-thumbnail

문제

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


풀이

  • 뒷 4자리 가져오기
    문자열에서 특정위치에서 시작하여 특정 문자 수 만큼 문자들을 반환하는 substr() 메서드를 사용하면 된다.
  • 뒷 4자리를 제외한 나머지 숫자를 전부 가져온 다음 *으로 replace 해주기
    나머지 숫자 remainder를 가져오기 위해서는 문자열에서 특정 인덱스부터 "종료인덱스를 포함하지 않는 문자열을 반환하는 substring() 메서드를 사용하면 된다. 그럼 뒷 4자리 이전까지의 값들만 추출할 수가 있다.
  • 정규식을 사용해 remainder를 *로 replace 해주자.
  • hiddenlastFourDigits 를 더한값을 return
function solution(phone_number) {
    let lastFourDigits = phone_number.substr(-4, 4);
    let remainder = phone_number.substring(0, phone_number.length -4);    
    let hidden = remainder.replace(/[0-9]/g, '*');
    
    return hidden + lastFourDigits;
}

정규식으로 코드를 줄여보자

function solution(phone_number) {
    return phone_number.replace(/\d(?=\d{4})/g, '*');
}

('문자열').replace(/정규표현식/, '대체문자열')

'정규표현식'에 매칭되는 항목을 '대체문자열'로 변환

\d : 숫자
(?=) : 앞쪽 일치(Lookahead)
{n} : n개
g : global (문자열 내의 모든 패턴을 검색한다)


substr()

substr() 메서드는 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환합니다.

str.substr(start[, length])

const str = 'Programmers';

console.log(str.substr(1, 2)); // "ro"
console.log(str.substr(2)); // "ogrammers"

substring()

substring() 메소드는 string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.

str.substring(indexStart[, indexEnd])

const str = 'Programmers';

console.log(str.substring(1, 3)); // "ro"
console.log(str.substring(2)); // "ogrammers"

참고링크

정규표현식

profile
Frontend Engineer

0개의 댓글