TIL10: [알고리즘] 핸드폰 번호 가리기
문제
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
입출력 예시
| phone_number | return |
| "01033334444" | "*******4444" |
| "027778888" | "*****8888" |
나의 풀이
function solution(phone_number) {
const frontNum = phone_number.split('').slice(0,phone_number.length-4);
const backNum = phone_number.split('').slice(phone_number.length-4);
const replaceNotANumber = frontNum.map((el) => el.replace(el,"*"));
const newNum = replaceNotANumber.concat(backNum)
return newNum.join('')
}
1) ‘*‘으로 바꿀 숫자 부분과 뒷 부분을 각각 변수로 선언하고 문자열을 split으로 바꾼 뒤, 뒤의 4자리를 제외하고 slice를 한다.
2) map안에 매개변수로 선언한 각각의 값을 replace를 사용해 "*"로 바꿔준다.
3) 두 문자열을 concat으로 묶은 뒤 join으로 배열을 문자열로 바꿔 반환한다.
다른사람의 풀이
function solution(phone_number) {
let number = "*".repeat(phone_number.length -4) + phone_number.slice(-4);
return number;
}
String.prototype.repeat() : 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
1) 엄청 클리어한 코드!
2) 인자의 길이의 -4만큼 “*” 수를 반복한 것 + slice로 뒤의 문자를 해서 새로운 문자를 변수로 담아 반환한다.
댓글남기기