알고리즘_핸드폰 번호 가리기

정재연·2022년 1월 15일
0

알고리즘

목록 보기
5/23

핸드폰 번호 가리기

1. 문제 설명

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

2. 제한 조건

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

3. 입출력 예

phone_numberreturn
'01033334444''*******4444'
'027778888''*****8888'

4. 나의 문제 풀이

문제를 받고 생각한 순서

  1. 맨 뒤 4개 숫자만 잘라서 살린다
    뒤 4length 만 잘라내는 매서드 찾아내자!
    문자열을 자르는 방법은 다양했는데 그중 slice를 사용했다. 이유는 slice 자체가 직관적이여서 사용하고 싶었다.
** slice(), substring(), substr()
phone_number.slice(-4)
  1. 나머지 숫자 * 변경 변경하자
    너머지 문자들을 * 로 변경하는 방법 for문으로 돌렸다.
function solution(phone_number) {
  let star=''    
    for (let i =1 ; i <= phone_number.length-4 ; i++) {
      star += "*"
    }
    return star += phone_number.slice(-4)
}

solution('123456789012349871234')	// *****************1234

5. 다른 사람의 풀이

  • repeat() 를 사용한 코드
function hide_numbers(s){
  var result = "*".repeat(s.length - 4) + s.slice(-4);

  return result;
}
  • 삼항연산자 를 사용한 코드
function hide_numbers(s){
  var result = ""
  for(var i=0;i< s.length;i++){    
    result += i < s.length -4 ? "*" : s.charAt(i);
  }  
  return result;
}

** charAt()을 사용한 이유는
slice(),substring() 은 2번째 인자를 생략하면 자동으로 마지막 까지 돌려주기때문에 반복되어 답이 나온다.
s.charAt(i) 대신 s[i] 를 사용해줘도 된다.

  • replace() 를 사용한 코드
    제일 간결했지만 정규식 아직은 너무 먼 그대...
    _참고로 replace(바꾸고자하는 문자, 바꿀 문자)이렇게 사용하는데,
    가장 처음으로 찾은 '바꾸고자하는 문자' 하나만은 바꿔 주기 때문에 정규식으로 변경해야 한다.
function hide_numbers(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}
profile
코린이 개발자 :)

0개의 댓글