프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number | return |
---|---|
"01033334444" | "***4444" |
"027778888" | "*8888" |
function solution(phone_number) {
const back4num = phone_number.length - 4;
let answer = "*".repeat(back4num) + (phone_number.split("").splice(back4num)).join("")
return answer;
}
우선 전화번호 뒷 4자리를 제외하고는 나머지 숫자는 모두 "*"로 가려야했으므로, 나머지 숫자만큼 *를 repeat()을 사용하여 미리 채워줬다. 그 다음 전화번호가 담긴 문자열을 배열로 만들어 splice()로 뒤 4자리 숫자를 answer에 추가하는 방법을 사용했다. 하지만 굳이 배열로 만들지 않고도 쉬운 방법이 있을 것 같은데 쉽게 떠오르지 않았다.
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
slice도 splice처럼 배열에서 쓰는 메소드로 생각하고 있었는데 slice는 배열, 문자열 모두 쓰이고 있는 걸 놓치고 있었다. 이런 메서드가 없을까 고민했지만 떠오르지 않았는데, slice를 쓰니 코드가 훨씬 간결해졌다. 자꾸 쓰던 메서드만 쓰게되는데 slice도 잊지 않고 잘 기억해야겠다.