최대 1 분 소요

문제

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

입출력 예시

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

나의 풀이

function solution(phone_number) {
    const frontNum = phone_number.split('').slice(0,phone_number.length-4);
    const backNum = phone_number.split('').slice(phone_number.length-4);
    const replaceNotANumber = frontNum.map((el) => el.replace(el,"*"));
    const newNum = replaceNotANumber.concat(backNum)

    return newNum.join('')

}

1) ‘*‘으로 바꿀 숫자 부분과 뒷 부분을 각각 변수로 선언하고 문자열을 split으로 바꾼 뒤, 뒤의 4자리를 제외하고 slice를 한다.
2) map안에 매개변수로 선언한 각각의 값을 replace를 사용해 "*"로 바꿔준다.
3) 두 문자열을 concat으로 묶은 뒤 join으로 배열을 문자열로 바꿔 반환한다.

다른사람의 풀이

function solution(phone_number) {
    let number = "*".repeat(phone_number.length -4) + phone_number.slice(-4);

    return number;
}

String.prototype.repeat() : 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.

1) 엄청 클리어한 코드!
2) 인자의 길이의 -4만큼 “*” 수를 반복한 것 + slice로 뒤의 문자를 해서 새로운 문자를 변수로 담아 반환한다.

댓글남기기