문제
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *
으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- 제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
나의 풀이
function solution(num) {
// 뒤 4자리만 빼고 *처리한 문자열 반환
// str -> arr -> 인덱스 -5부터 -arr.length까지 *로 변경 -> str
let arr = num.split('')
for (let i = -5; i >= -arr.length; i--) {
arr.splice(i, 1 , "*");
}
return arr.join("");
}
인덱스를 음수로 식별가능한 메소드를 찾다 보니 복잡해졌다.
- 정확도 테스트 결과
다른 풀이
function solution(num) {
// 앞에 num.length - 4만큼 *로 반복 + 뒤에 4자리 붙여주기
return "*".repeat(num.length - 4) + num.slice(-4);
}
굳이 배열로 바꾸지 않아도 해결 가능했다!string.slice()
메소드는 인덱스로 음수를 인식하기 때문에 발췌 후, 합쳐주면 된다.
정확도 테스트 결과
function solution(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
참고
https://www.zerocho.com/category/Algorithm/post/5b7bce15b35bf5001b940db9
'Coding test' 카테고리의 다른 글
[프로그래머스] 2016년 (Level 1) (0) | 2022.04.16 |
---|---|
[프로그래머스] x만큼의 간격이 있는 n개의 숫자 (Level 1) (0) | 2022.04.16 |
[프로그래머스] 하샤드 수 (Level 1) (0) | 2022.04.16 |
[프로그래머스] 콜라츠 추측 (Level 1) (0) | 2022.04.16 |
[프로그래머스] 제일 작은 수 제거하기 (Level 1) (0) | 2022.04.15 |