[프로그래머스] Lv.1 핸드폰 번호 가리기 - JavaScript

윤지·2024년 11월 5일

코딩테스트

목록 보기
4/10
post-thumbnail

📍 문제

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.

전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

  • phone_number는 길이 4 이상, 20이하인 문자열입니다.

입출력 예

phone_numberreturn
"01033334444""***4444"
"027778888""*8888"

🥔 내 코드

1차

function solution(phone_number) {
  let number = "";
  let result = phone_number.length - 4;
  for (let i = 0; i < phone_number.length; i++) {
    if (i < result) {
      number += "*";
    } else number += phone_number[i];
  } return number;
}

2차: 코드 개선 - if문을 삼항 연산자로 변경

function solution(phone_number) {
  let number = "";
  let result = phone_number.length - 4;
  for (let i = 0; i < phone_number.length; i++) {
    number = i < result ? number += "*" : number += phone_number[i];
  }
  return number;
}

✅ 풀이 과정

  1. number라는 빈 문자열을 선언합니다.
  2. result에 전화번호 길이에서 4를 뺀 값을 할당합니다. 이는 '*'로 가릴 문자의 개수입니다.
  3. 전화번호의 길이만큼 반복문을 실행합니다:
  • 인덱스가 result보다 작으면 (뒤에서 4자리 전까지) number에 '*'를 추가합니다.
  • 그렇지 않으면 (뒤 4자리) 원래 전화번호의 숫자를 그대로 추가합니다.
  1. 최종적으로 변환된 number 문자열을 반환합니다.

💡 다른 사람의 코드

function solution(phone_number) {
   let result = []

   for(let i = 0; i < phone_number.length; i++){
      if(i < phone_number.length-4){
          result.push('*')
      } else {
          result.push(phone_number[i])
      }
   }

   return result.join('')
}

💬 마치며

이 풀이는 내 방식과 거의 비슷하지만, 빈 배열을 생성하여 요소를 push하고 .join() 메서드를 사용해 배열의 모든 요소를 하나의 문자열로 연결할 수 있다는 점을 새롭게 알게 되었다.

profile
프론트엔드 공부 기록 아카이빙🍁

0개의 댓글