프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
function solution(phone_number) {
let answer = '';
/* 전화번호가 5자리 이상인 경우에만 실행되며
뒷 4자리를 제외한 나머지 숫자들을 '*'로 가리기 위한 로직 */
for(let i = phone_number.length - 5; i >= 0; --i){
answer += '*';
}
// 끝에서 4번째 인덱스부터 4개의 문자열을 반환받아 추가해준다.
answer += phone_number.substr(phone_number.length - 4, 4);
return answer;
}
처음엔 C++의 기능이 당연히 될줄 알고 phone_number[i] = '*';처럼 인덱스를 직접 접근하여 바꾸는 방법으로 시도 했는데 데이터가 read only로 되어있다며 에러가 낫다. 결국은 재조립하는 방법 밖에 없다는 생각으로 다시 작성해서 금방 풀었다.
const solution = n => [...n].fill("*",0,n.length-4).join("")
저렇게 깔끔하게 한줄로 끝낼 수 있다니.. 아직은 익숙해지기 어렵긴하지만 역시 자바스크립트 알면 알수록 대단하다. 하다보면 C++ 코드 작성할 때의 고무된 생각을 더 확장시켜서 나도 저렇게 작성할 수 있겠지..?
참고 자료 및 사이트 (감사합니다)