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

hyocho·2022년 6월 9일
0

코딩테스트

목록 보기
4/45

✅문제

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

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

💡주어진 솔루션

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

✍문제풀이

function solution(phone_number) {
    let len = phone_number.length - 4;
  //len 에 phone_number의 길이에서 4를 뺀 길이를 저장해 준다. let 대신 const로 선언해도 괜찮다. 
    return '*'.repeat(len) + phone_number.substring(len);
  // phone_number의 길이에서 4를 뺀 길이만큼 *를 반복해주고 substring을 이용해서 나머지 4만큼의 숫자를 반환해준다.
}

✔️참고할 좋은 코드

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

위는 정규표현식을 사용한 코드
\d(4)는 숫자가 4번 반복되는 문자열을 의미한다.
\d(?=\d{4})로 숫자 4개가 뒤따라오는 숫자 문자를 구한다.
그것을 "*"로 replace 해준다.

function hide_numbers(s){
  var result = "*".repeat(s.length - 4) + s.slice(-4);
  return result;
  //slice 가 '음수' 지원이 되므로 slice를 쓰는 것을 추천

📝TIL

  • str.substring(count) : 첫 번째 인수로 전달받은 인덱스에 위치하는 문자부터 두 번째 인수로 전달받은 인덱스에 위치하는 문자의 바로 이전까지의 부분 문자열을 반환한다. 두 번째 인수는 생략할 수 있으며 이 때는 첫 번째 인수로 전달한 인덱스에 위치하는 문자부터 마지막 문자까지 부분 문자열을 반환한다. 인수가 0보다 작은 값이거나 NaN인 경우 0으로 취급된다. 만약 첫 번째 인수가 두 번째 인수보다 큰 경우, 두 인수는 교환된다.
  • str.repeat(count)
  • 정규표현식 : 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 format language (형식 언어)이다. \d는 숫자 문자에 대응된다.[0 - 9] 와 동일하다.
    x(?=y)는 오직 'y'가 뒤따라오는 'x'에만 대응된다. 이것은 lookahead라고 불린다. {n}은 앞 표현식이 n번 나타나는 부분에 대응된다. n은 반드시 양의 정수여야 한다. 플래그 g: Global이라는 의미이다. 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다.

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12948
참고 페이지 : https://jaypedia.tistory.com/61
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions

profile
기록하는 습관을 기르고 있습니다.

0개의 댓글