핸드폰 번호 가리기

Cottonmycotton·2021년 9월 28일
0

Algorithm

목록 보기
6/44
post-custom-banner

문제 설명

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

제한 사항

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

입출력 예시

🖊 풀이

  • s의 길이는 4 이상, 20이하인 문자열이라는 제한 조건이 있다. 이는 문자열 길이가 줄어들거나 늘어나더라도 마지막 4자리 수는 제외한 앞의 문자는 모두 * 로 블러처리를 해야된다는 말이다.

📌 String.prototype.substring()

  • 첫 번째 인수 > 두 번째 인수인 경우 두 인수는 교환된다
  • 인수 < 0 또는 NaN인 경우 0으로 취급된다
  • 인수 > 문자열의 길이인 경우 인수는 문자열의 길이로 취급된다
  • 두 번째 인수를 length -4로 두어 문자열의 길이가 변하더라도 뒤에서 4번째 까지 문자열을 잘라 반환하게 만들었다.

📌 String.prototype.repeat()

  • repeat 메서드는 대상 문자열을 인수로 전달받은 정수만큼 반복해 연결한 새로운 문자열을 반환한다. 인수로 전달받은 정수가 0이면 빈 문자열을 반환하고, 음수이면 RangeError를 발생시킨다. 인수를 생략하면 기본값 0이 설정된다.
  • 처음엔 replace, replaceAll메서드를 써보려고 이리저리 시도해봤는데 첫 번째 인수가 문자열이 아니면 메서드가 작동하지 않아 repeat메서드를 사용하게 되었다.

📌 String.prototype.slice()

  • slice메서드는 substring과 동일하게 동작한다. 단, slice 메서드는 음수인 인수를 전달할 수 있다. 음수인 인수를 전달하면 대상 문자열의 가장 뒤에서부터 시작하여 문자열을 잘라내어 반환한다.

(출처: 모던 자바스크립트 Deep Dive)

💡 코드

function solution(phone_number) {
  const starring = "*";
  const frontNumber = phone_number.substring(0, phone_number.length - 4);
  const blurNumber = starring.repeat(
  frontNumber.length);
  const backNumber = phone_number.slice(-4);
  const answer = blurNumber + backNumber;
  return answer;
} 

solution("01033334444");
solution("027778888");

문제 출처: 프로그래머스

profile
투명인간
post-custom-banner

0개의 댓글