프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *
으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number | return |
---|---|
"01033334444" | "***4444" |
"027778888" | "*8888" |
💡 문제풀이 과정
- 내가 생각한 것은
repeat()
과substring()
이었는데 (1번 답안), 다른 분들의 풀이를 참고 해보니, 2번 답안인repeat()
과slice()
의 조합이 가장 간단 명료해 보였다. slice를 음수로 적용하여 쓸 수 있다는 것도 새롭게 배웠다.- 3번 답안의 경우 문자열을 배열로 변환하여
fill()
함수를 통해 마스킹(*)처리를 해 주는 방법 또한 좋았다.- 마지막으로 4번 답안인
정규식
은 간편하니? 좋긴 한데 쓸 때 구글링을 해봐야 할 것 같다.
✅ 답안 #1 - repeat()
, substring()
function solution(num) {
const leng = num.length;
return (
"*".repeat(num.substring(0, leng - 4).length) +
num.substring(leng, leng - 4)
);
}
✅ 답안 #2 - repeat()
, slice()
function solution(num) {
return "*".repeat(num.length - 4) + num.slice(-4);
}
✅ 답안 #3 - [...array]
, fill()
, join()
function solution(num) {
return [...num].fill("*", 0, num.length - 4).join("");
}
✅ 답안 #4 - 정규식 replace()
function solution(num) {
return num.replace(/\d(?=\d{4})/g, "*");
}