프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
<제출 답안>
function solution(phone_number) {
let change = phone_number.split("").filter((x,i) => i < phone_number.length-4)
return change.map(x => x='*').join("")+[...phone_number].slice(phone_number.length-4, phone_number.length).join("")
}
답이 제법 복잡하다. 풀긴 풀었는데ㅎㅎ 좀더 짧은 코드로 쓰고 싶다.
아래 코드가 내 코드를 간결하게 옮긴듯한 코드다. repeat()은 생각도 못했네..
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
//함수를 완성해주세요
return result;
}
아래와 같은 코드도 아주 훌륭하다.
const solution = n => [...n].fill("*",0,n.length-4).join("")
<보충>
음수 인덱스와 함께 slice() 사용
다음 예에서는 slice()음수 인덱스와 함께 사용합니다.
const str = "The morning is upon us.";
str.slice(-3); // 'us.'
str.slice(-3, -1); // 'us'
str.slice(0, -1); // 'The morning is upon us'
str.slice(4, -1); // 'morning is upon us'
클립 보드에 복사이 예제는 11시작 색인을 찾기 위해 문자열의 끝에서 역방향으로 계산하고 끝 색인을 찾기 위해 문자열의 시작에서 정방향으로 계산합니다 16.
console.log(str.slice(-11, 16)); // "is u"
클립 보드에 복사여기 11에서 시작 인덱스를 찾기 위해 시작부터 앞으로 카운트하고 끝 인덱스를 찾기 위해 끝에서 뒤로 카운트 7합니다.
console.log(str.slice(11, -7)); // " is u"
클립 보드에 복사이러한 인수 5는 시작 색인을 찾기 위해 끝부터 역방향으로 계산하고 1끝 색인을 찾기 위해 끝에서 역방향으로 계산합니다.
console.log(str.slice(-5, -1)); // "n us"
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
제일 작은 수 제거하기(Lv.1)[splice(),slice(), 최솟값 Math.min(..str)] (0) | 2023.01.06 |
---|---|
나누어 떨어지는 숫자 배열(Lv.1)[배열에 추가조건 붙이기, 빈배열 확인] (0) | 2023.01.06 |
문자열 정렬하기 (2)[소, 대문자 수정 to(Lower/Upper)Case ,순서sort()] (0) | 2023.01.06 |
369게임(Lv.0)[matchAll과 정규식 원하는 숫자만 사용법-> /[3|6|9]/g ] (0) | 2023.01.05 |
두 정수 사이의 합(Lv.1) (0) | 2023.01.05 |