Coding test

[프로그래머스] 핸드폰 번호 가리기 (Level 1)

Jiwoo 2022. 4. 16. 16:55

문제

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

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

나의 풀이

function solution(num) {
    // 뒤 4자리만 빼고 *처리한 문자열 반환

    // str -> arr -> 인덱스 -5부터 -arr.length까지 *로 변경 -> str
    let arr = num.split('')

    for (let i = -5; i >= -arr.length; i--) {
       arr.splice(i, 1 , "*");
    }

    return arr.join("");
}

 
인덱스를 음수로 식별가능한 메소드를 찾다 보니 복잡해졌다.
 

  • 정확도 테스트 결과

     

다른 풀이

function solution(num) {
    // 앞에 num.length - 4만큼 *로 반복 + 뒤에 4자리 붙여주기

    return "*".repeat(num.length - 4) + num.slice(-4);
}

 
굳이 배열로 바꾸지 않아도 해결 가능했다!
string.slice() 메소드는 인덱스로 음수를 인식하기 때문에 발췌 후, 합쳐주면 된다.
 

  • 정확도 테스트 결과


     

정규식을 이용한 코드
function solution(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}

 

참고

https://www.zerocho.com/category/Algorithm/post/5b7bce15b35bf5001b940db9