개발 뜯기/코딩테스트

[프로그래머스 / JavaScript] Lv.1 핸드폰 번호 가리기

디자인 지지(ZII) 2021. 6. 22. 18:55
반응형

 

문제 설명

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

 

제한 조건

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

 

문제 풀이

function solution(num) {
    const numLength = num.length - 4;
    
    return "*".repeat(numLength) + num.substring(numLength);
    
}

매개변수 - 4 길이만큼 repeat() 메서드로 별을 찍었다. 그리고 substring()*으로 이후 뒷자리 값을 출력했다.

 

다른 사람 풀이

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

정규식*은 아직 잘 못외웠는데 멋있는 것 같다. 어떻게 저렇게 쓰지??

 

 

*substring()

string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환한다.

str.substring(indexStart[, indexEnd])

indexStart로부터 문자를 추출하지만 indexEnd를 포함하지 않을 수 있다. 0보다 작은 인자 값을 가지는 경우에는 0으로, stringName.length 보다 큰 인자 값을 가지는 경우, stringName.length 로 처리된다. NaN 값은 0으로 처리된다.

  • indexStart : 반환문자열의 시작 인덱스 
  • indexEnd : 옵션.  반환문자열의 마지막 인덱스 (필수 x)

 

*정규표현식(정규식)

정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다. 자바스크립트에선 객체이다.

정규식을 만드는 방법엔 두 가지가 있다. 

  • 정규식 리터럴(슬래쉬"/"로 감싸는 패턴)을 사용하는 방법
    정규식 리터럴은 스크립트가 불러와질 때 컴파일된다. 만약 정규식이 상수라면 이렇게 사용하는 것이 성능 향상에 도움이 될 수 있다.
    var re = /ab+c/;
  • RegExp 객체의 생성자 함수를 호출하는 방법도 있다.
    생성자 함수를 사용하면 정규식이 실행 시점에 컴파일된다. 정규식의 패턴이 변경될 수 있는 경우, 혹은 사용자 입력과 같이 다른 출처로부터 패턴을 가져와야 하는 경우 사용.
    var re = new RegExp("ab+c");​

 

 

정규식 더 자세하게 알아보기(미정)

 

 

반응형