5월 24일 알고리즘2(핸드폰 번호 가리기)

이정민·2022년 5월 24일
0

알고리즘

목록 보기
11/23

핸드폰 번호 가리기

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

제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "***4444"
"027778888" "*8888"

나의 풀이

function solution(phone_number) {
    let num = ""
    for(let i =0; i< phone_number.length; i++){
        if (i < phone_number.length -4){
            num+= "*"
        }else {
            num+=(phone_number[i])
        }
    }
    return num
}

오늘은 첫번째로 푼 문제의 난이도가 생각보다 낮아서 문제를 하나 더 풀게 되었다.

반복문을 통해 끝자리 4번째 번호전까지는 *처리를 하고 그 이후에 오는 수들은 노출하게 만들었다. 비교적 어렵지 않게 풀었지만 for문을 돌리는것 말고 다른 방법이 있을까 하는 생각이 들어 다른사람의 풀이를 보게되었다.

그 중 정규표현식은 아직 다루기 어렵고 내 수준에서 접근할만한 답안은 다음과 같다.

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

마지막 문자열 4개는 slice로 잘라서 사용하고 나머지 문자열들은 String.prototype.repeat(count)을 사용하여 *을 반복하여 새로운 문자열로 만들어내었다.
repeat(반복할횟수)
이렇게되면 반복문을 돌지 않아서 시간복잡도도 내려가고 효율성이 올라갈 것이다.

0개의 댓글