프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number는 길이 4 이상, 20이하인 문자열입니다.
function solution(phone_number) {
let back = phone_number.substr(-4,4)
let change = []
let array = [...phone_number+""]
for(i=0;i<array.length-4;i++) {
change += array[i].replace(/[0-9]/gi,"*")
}
return change+back;
}
내가 풀이한 코드는 다음과 같다.
1. substr() 메소드를 사용해서 문자를 반환한다.
2. 빈 배열을 만든다
3. phone_number가 숫자이기때문에 배열로 만든다.
4. 배열의 길이 - 4 만큼씩 for문을 돌린다.
5. for문을 돌릴때마다 빈 배열에 * 가 쌓이겠지?!
6. change+back 을 더해 return 한다.
조금 복잡하게 푼 것 같다.
알아보니 substr() 메소드가 지원 중단이라 이제 사용하지 말라는 내용이 있었다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/substr
const solution = n => [...n].fill("*",0,n.length-4).join("")
다른 사람이 해결한 1줄 풀이가 있다.
arr.fill(value[, start[, end]])
value는 배열을 채울 값
start는 시작 인덱스
end는 끝 인덱스
join("")을 통해 배열을 다시 문자열로 합쳤다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/fill