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

Hyunji·2022년 1월 15일
0

알고리즘

목록 보기
7/51
post-thumbnail

문제설명

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

제한조건

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

입출력 예시

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

문제풀이

function solution(phone_number) {
    var answer = '';
  
  // 번호 뒷 4자리 가져오기
    let back = phone_number.substr(-4,4);
    console.log(back);
  
  // 번호 뒷 4자리를 제외한 앞부분을 가져오기
    let front = phone_number.substring(0,phone_number.length-4);
    console.log(front);

  // 뒷 4자리를 제외한 앞부분을 * 문자로 변환해주기
    let result = front.replace(/[0-9]/g,'*');
    console.log(result);
    
  // * 문자로 변환해 준 부분과 뒷자리를 더해서 값을 구하기
    answer = result + back

    return answer;
}

처음 문제를 보고 번호 뒷 4자리를 가져오는 함수를 사용하고, 뒷 4자리를 제외한 앞부분을 가져와서 * 로 바꿔준 다음 두개를 더해서 결과를 내는 방법으로 접근했다.

  • back 이라는 변수를 선언한 다음, .substr() 함수를 이용해서 주어진 번호 뒷 4자리를 가져온다
  • front 라는 변수를 선언한 다음, .substring() 함수를 이용해서 처음부터 뒤에 4자리를 제외하고 그 앞부분 까지 번호를 가져온다
  • result 라는 변수를 하나 더 선언하고, front 라는 변수에 저장된 숫자들을 .replace() 함수를 이용해서 * 로 바꿔준다
  • result 와 back 을 더해 값을 구한다

지금 적은 방법보다 더 간단하게 작성할 수 있는 방법이 있을 것 같다.

두 번째 방법

function solution(phone_number) {
    var answer = '';
    answer = phone_number.slice(0,-4).replace(/[0-9]/g,'*') + phone_number.slice(-4);
return answer;
}

.substring() 과 .substr() 기능을 .slice() 를 써서 코드를 한 줄로 줄여봤다

  • 인덱스 0부터 마지막 4자리 전까지 slice 한 후, replace 로 그 부분을 * 로 바꾸어 준 뒤 뒤에 마지막 4자리를 다시 slice 해서 붙여 넣는 방식으로 코드를 작성했다.

다른 사람의 코드

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

정규식을 사용해서 코드를 작성한건데.... 이렇게 간단하게 끝나다니
천잰가?

profile
성장중인 개발자

0개의 댓글