-
[level1] 핸드폰 번호 가리기programmers/level1 2020. 7. 18. 17:46
문제 설명 :
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.입력 : "01033334444"
출력 : "********4444"
입력 : "027778888"
출력 : "*****8888"
접근 방법 :
일단 출력 값을 보고 접근 방향성을 어떻게 할지 생각해보았다.
생각해 본 결과 이 숫자로 이루어진 문자열을 split("")을 이용해서 ["0", "1", "0", "3", "3", "3", "3", "4", "4", "4", "4"] 이렇게 모두 배열로 만들어 놓고, map() 안에서 삼항 연산자로 배열의 끝에서 4자리의 수를 뺀 부분까지만 "*"를 반환하고 이 이상부터 숫자를 반환하는 조건을 주는 로직을 짜보았다.
그리고 return 하기 전에 문자열을 배열로 변환했기 때문에 다시 문자열로 바꿔줘야 한다.
join()을 통해 배열을 문자열로 바꿔서 return한다.
내가 짠 코드 :
function solution(phone_number) { let answer = phone_number.split("") return answer.map((num, idx) => {return idx < answer.length - 4 ? "*" : num;}).join(""); }
다른 사람이 짠 인상 깊은 코드 :
function hide_numbers(s){ var result = "*".repeat(s.length - 4) + s.slice(-4); return result; }
문자열 s의 길이에서 4자리 수를 뺀 길이만큼 *를 반복해 붙여 새로운 문자열을 반환하고, slice()를 통해 뒤에 4자리 숫자만 추출해 새로운 문자열을 result로 만들어 반환하는 로직이다.
굉장히 기본에 충실하면서 깔끔하게 짠 것 같아서 가져와보았다.
밑에는 참고용!
'programmers > level1' 카테고리의 다른 글
[level1] - 짝수와 홀수 (0) 2020.07.20 [level1] - x만큼 간격이 있는 n개의 숫자도움말 (0) 2020.07.19 [level1] - 제일 작은 수 제거하기 (0) 2020.07.14 [level1] - 자연수 뒤집어 배열로 만들기 (0) 2020.07.04 [level1] 이상한 문자 만들기 (0) 2020.07.04