저장을 습관화

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

코딩 테스트/프로그래머스 - 자바스크립트

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

ctrs 2023. 9. 9. 01:30

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

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 명

핸드폰 번호 가리기


2. 문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.

전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.


3. 제한 사항

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


4. 예시

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


5. 기본 제공 코드

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


6. 제출한 내 답

const solution = (phone_number) => {
  return `${
    phone_number.slice(0, -4).replace(/[0-9]/gi, "*") + phone_number.slice(-4)
  }`;
};

 

6-2. VSC에 작성한 내용

const solution = (phone_number) => {
  //   const censored = phone_number.slice(0, -4).replace(/[0-9]/gi, "*");
  //   const uncensored = phone_number.slice(-4);
  //   phone_number = phone_number.replace(/[0-9]/gi, "*");

  //   return censored + uncensored;
  return `${
    phone_number.slice(0, -4).replace(/[0-9]/gi, "*") + phone_number.slice(-4)
  }`;
};

// test
console.log(solution("01033334444"));
console.log(solution("027778888"));


7. 특이사항

신기하게도 방금 전에 정리한 slice와 replace를 둘 모두 사용할 수 있는 문제가 나왔다

블로그에 정리하길 잘했다는 생각이 든다


8. 다른 사람이 작성한 답

8-1.

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function hide_numbers(s){
  return s.replace(/\d(?=\d{4})/g, "*");
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + hide_numbers('01033334444'));

정규식은 정말 심오하구나

 

8-2.

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function hide_numbers(s){
    var result = "*".repeat(s.length - 4) + s.slice(-4);
    return result;
  }

  // 아래는 테스트로 출력해 보기 위한 코드입니다.
  console.log("결과 : " + hide_numbers('01033334444'));

 

8-3.

// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
function hide_numbers(s){
  var result = "";
  //함수를 완성해주세요

 for(var i=0; i<s.length; i++){
   result += i < s.length-4 ? "*":s.charAt(i);
 }

  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + hide_numbers('01033334444'));