728x90
문제설명
- 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01023234444" | "*******4444" |
"02774233" | "****4233" |
나의 답
function solution(phone_number) {
var answer = phone_number.split('')
for(var i =0; i<phone_number.length-4; i++){
answer[i] = '*'
}
return answer.join('');
}
사실 보자 마자 splice와 map 을 이용해서 풀면 되겠다.,.! 라고 생각하며 풀었지만 조금 뭔가 안풀려 급하게 방식을 바꿨던,,
- split으로 phone_number를 배열에 담고
- 반복문을 이용해 끝에 4자리까지 반복하여 *를 직접 집어넣은 뒤에
- join으로 string으로 합친다
다른 사람 풀이
사실 이게 내가 풀려하던 방법이었다
function solution(phone_number) {
return [...phone_number].map((a, i) => i < phone_number.length-4 ? "*" : a).join("")
}
- 스프레드연산자로 phone_number를 배열에 넣어주고
- map을 이용하여 전체길이-4 보다 작을때까지 인덱스에 *을 넣어준뒤
- join으로 합친다
음 코드를 보니 순간 왜 헤맸지,,? 스프레드나 map 을 다시 파헤쳐 봐야될듯하다
function hide_numbers(s){
return s.replace(/\d(?=\d{4})/g, "*");
}
간단하게 정규식으로 푼 풀이도 있었다
하지만, 이는 좀 시간이 오래걸리는듯?
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
repeat가 slice를 이용한 풀이 방법이다
이도 굉장히 직관적인 풀이인듯 하다
- repeat을 이용해 뒷4자리를 제외한 phone_number의 수만큼 *을 생성하고
- slice로 뒷4자리를 떼어내어 위와 붙혀 반환한다
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스 js] 약수의 개수와 덧셈 (0) | 2023.10.31 |
---|---|
[프로그래머스 js] 없는 숫자 더하기 (0) | 2023.10.31 |
[프로그래머스 js] 나누어 떨어지는 숫자 배열 (1) | 2023.10.30 |
[프로그래머스 js] 서울에서 김서방 찾기 (0) | 2023.10.27 |
[프로그래머스 js] 콜라츠 추측 (0) | 2023.10.27 |