[프로그래머스] 핸드폰 번호 가리기 - Javascript

devmin24·2021년 7월 30일
2

⏳ 도전! 알고리즘

목록 보기
22/32
post-thumbnail

문제 링크

문제

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

입출력 예

phone_numberreturn
"01033334444""* * * * * * *4444"
"027778888""* * * * *8888"

풀이

.repeat(), .substring() 메서드를 사용하자.

  • str.repeat(count);
    repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
  • str.substring(시작,종료 or 시작);
    string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환한다.
function solution(phone_number) {
    const len = phone_number.length - 4;
    return "*".repeat(len) + phone_number.substring(len);
    // 뒤 4자리를 기준으로 앞의 번호들을 repeat를 사용해 *처리해주고, substring은 인덱스 값을 사용해 시작점을 정해줄 수 있다.
}

헷갈림 주의!
.repeat()는 매개변수의 값만큼 새로운 문자열로 반환해주고, .substring()은 매개변수의 값을 인덱스 값으로 하여 그 시점부터 부분 문자열을 반환한다.

substring()보다 slice()를 사용하는 것을 추천한다는 것을 보고 slice()로 재풀이 해보았다.

  • str.slice(시작, 종료 or 시작);
    어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다. 음수를 사용할 경우 뒤부터 불러온다.
function solution(phone_number) {
    const len = phone_number.length - 4;
    return "*".repeat(len) + phone_number.slice(-4);
    // 뒤 4자리를 기준으로 앞의 번호들을 repeat()를 사용해 *처리해주고, slice()를 사용해 뒤의 4자리만 불러온다.
}

Takeaway

내가 좋아하는 메서드를 이용하여 푸는 문제였다.
각자 다른 기능을 제공하는 메서드지만, 활용도에 따라 같은 효율을 볼 수 있다는 점이 신기했던 문제다. slice()는 매개변수로 음수를 지원하는 것, 기억하기!

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻

0개의 댓글