Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "핸드폰 번호 가리기"

by 별의 코비 2022. 11. 14.
728x90

🔥 Programmers Lv.1 : 핸드폰 번호 가리기


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

📎 조건 :
∙ phone_number는 길이 4 이상, 20이하인 문자열입니다.


👉🏻 My answer

function solution(phone_number) {
    let answer = "";
    for(let i=0; i<phone_number.length; i++){
        if(i<phone_number.length-4){
            answer = answer + "*";
        } else {
            answer = answer + phone_number[i];
        }
    }
   return answer; 
}
: for문과 if문을 이용하여 마치 자바스크립트의 초보처럼 코드를 작성해주었습니다.


👉🏻 Another ways

function solution(phone_number) {
  var answer = phone_number.split("");
  
  return new Array(answer.length)
    .fill("*")
    .splice(0, answer.length - 4)
    .concat(answer.splice(answer.length - 4))
    .join("");
}
: fill메서드를 통해 배열 안 요소 전부 다 *로 바꿔준 후 뒤에서부터 4자리를 splice메서드를 통해 제거한 후 answer의 뒷4자리를 다시 concat으로 합쳐주었습니다.
function hide_numbers(s) {
    return s.replace(/\d(?=\d{4})/g, "*");
  }
: /\d(?=\d{4})/g => /정규식/, g: 전체, \d: 숫자[0-9]랑 같음, {n}: 앞의 식이 n번 반복, x(?=y) : y뒤에 있는 x만 대응, \d(?=\d{4}) : 뒤에 달아 숫자 4개가 있다면 그 앞(x)부분
: 정규식으로 쓰니 한 줄이면 충분하군요? 멋있다.

댓글