[프로그래머스][JS] 핸드폰 번호 가리기
https://school.programmers.co.kr/learn/courses/30/lessons/12948
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(phone_number) {
let answer = []
const phoneArr = phone_number.split('').reverse() // 문자열을 배열로 만들고 뒤집기
for (let i = 0; i < 4; i++){ // 문제에서 뒷 4자리는 그대로 놔두라고 했으니까
answer.push(phoneArr[i]) // 인덱스 3까지 그대로 push
}
for (let i = 0; i < phoneArr.length - 4; i++){ // 나머지 길이만큼 '*'을 채우고 push
answer.push('*')
}
return answer.reverse().join(''); // 뒤집어진 배열을 다시 뒤집고 문자열로 만들어 주기 위해서 join
}
리뷰
for문 두 번 사용해서 풀었는데 풀고나서 다른 사람 풀이를 보니까 다양한 방법이 있었다
[방법1]
const solution = n => [...n].fill("*",0,n.length-4).join("")
fill 메서드는 한 번도 사용해보지 않았는데 위의 코드를 해석해보면
① 문자열 n을 배열로 바꾸고 [...n]
② 0부터 마지막에서 4번째 전 배열만큼 '*'로 채워라 .fill('*', 0, n.length - 4)
③ 그리고 배열을 문자열로 바꿔라 .join('')
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
Array.prototype.fill() - JavaScript | MDN
fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다.
developer.mozilla.org
[방법2]
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
① '*' 문자를 s.length - 4 길이만큼 반복하고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
String.prototype.repeat() - JavaScript | MDN
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.
developer.mozilla.org
② slice로 -4 부터 문자열 마지막까지 잘라서
③ ① + ② 를 붙여서 반환한다