Algorithm JS | 프로그래머스 코딩테스트_핸드폰 번호 가리기

앙두·2023년 6월 14일
0

Algorithm

목록 보기
13/17

📑 문제

  • 인자로 전화번호 string
  • 전화번호의 길이는 4 ~ 20
  • 전화번호의 뒷 4자리를 제외한
  • 나머지 숫자를 다 *로 표시

🤓 나의 풀이

내가 아는 메서드를 최대한 동원해서, 간단하게 풀어보려고 애썼다!
+1점 밖에 못 얻어서 아쉽지만 ... 그래도 첫 1레벨 문제였는데, 무사히 풀어내서 감사! 못 푼 것보다 100배 좋지용

const contact = '01012345678'
function solution(pn) {
    let pnArr = [...pn]
    let backNum4 = pnArr.splice(-4)
    let numsToStar = pnArr.map((el) => el = '*')

    return numsToStar.concat(backNum4).join('')
}
solution(contact)
  1. pn이 전화번호 string이기 때문에, 우선 spread operator배열 얕은 복사를 하여, 변수 pnArr에 할당시킨다.
    👉🏻 ['0', '1', '0', '1', '2', '3', '4', '5', '6', '7', '8']
  2. splice()로 뒤의 4자리만 잘라내어, 변수 backNum4에 할당시킨다. (*참고로 splice()는 원본 배열을 변경시키는 mutablearray method이다.)
    👉🏻 ['5', '6', '7', '8']
  3. 그럼 pnArr은 뒤에 4자리가 잘린 배열이 된다.
    👉🏻 ['0', '1', '0', '1', '2', '3', '4']
  4. pnArrmap()로 순회하며 각 요소를 별표로 변경하여 새로운 배열을 return 하여 변수 numsToStar에 할당한다.
    👉🏻
  5. 이제 배열 backNum4 와, numsToStarconcat()로 합친 후, 합친 배열 내 요소들을 join()으로 합쳐 하나의 string으로 반환시킵니다.
    👉🏻

문제레벨 1로 올랐으니, 더 새로운 메서드들을 공부해서 더 간단히 그리고 더 효율적인 방법으로 똑똑하게 풀어나갈 수 있길!


👍🏻 제일 간단한 풀이 (다른 사람들의 풀이 참고)

function solution(s){
    var result = "*".repeat(s.length - 4) + s.slice(-4);
    return result;
  }

  console.log("결과 : " + solution('01033334444'));

repeat()이라는 메서드를 공부할 수 있게 되었다.
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환시켜주는 함수다.
이 함수를 사용하면 훨씬 더 간단하게 풀 수 있다.

  1. 별 기호를 일정 반복시키는데, 인자로 주어지는 전화번호의 길이에서 -4한 길이수만큼 반복시킨다.
  2. slice()메서드를 사용하여 전화번호를 뒤에서 4자리를 잘라낸다.
  3. 4자리를 뺀 길이의 별 기호 string + 잘라낸 4자리의 string 을 합치면, 올바른 반환값이 반환된다!
profile
쓸모있는 기술자

0개의 댓글