Lv. 1 - 핸드폰 번호 가리기 풀이과정
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
-
phone_number
는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
---|---|
“01033334444” | “***4444” |
“027778888” | “*****8888” |
문제 풀이
const solution = phone_number => {
let str = '';
for(let i = 0; i < phone_number.length; i++){
i < phone_number.length - 4
? str += "*"
: str += phone_number[i]
}
return str;
}
함수 선언
- 화살표 함수를 사용하여
phone_number
를 매개변수로 받는다.
풀이
- 문자열을 담아줄 변수
str
을 선언한다. -
for
문을 사용하여phone_number
의 길이만큼 순회함 - 뒤의 4자리를 가려주기 위해
phone_number
의 길이 - 4를 해줌 - 4자리 이전까지는
'*'
을 문자열에 담아주고 - 4자리 부터는 기존 폰 번호를 담아줌
결과 반환
-
phone_number = 01033334444
대입하면 뒤의 4자리 4444를 제외하고 ***4444가 출력된다. -
phone_number = 027778888
대입하면 뒤의 4자리 8888을 제외하고 *****8888가 출력된다.
실행
-
solution("01033334444")
실행하면 ***4444 츨력 -
solution("027778888")
실행하면 *****8888 츨력
다른 사람의 풀이 참고
나름 정석으로 풀었다 생각을 했지만 생각보다 for문을 사용한 풀이가 많지는 않았다. 정규식을 사용한 방법과 repeat, slice를 사용한 문제 풀이가 있었는데 한줄 코드로는 fill메서드를 사용한 풀이가 돋보였다.
// [27명] 정규식을 사용한 문제 풀이
function hide_numbers(s){
return s.replace(/\d(?=\d{4})/g, "*");
}
// [3명] repeat, slice 사용한 문제 풀이
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
// [1명] fill 메서드를 사용한 문제 풀이
const solution = n => [...n].fill("*",0,n.length-4).join("")
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges