[Programmers #12948] - 핸드폰 번호 가리기

G_NooN·2024년 1월 9일
0

Algorithms

목록 보기
16/33
post-thumbnail

(Lv. 1) 핸드폰 번호 가리기 (문제 링크)

문제 설명

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

제한 조건

  1. phone_number는 길이가 4 이상, 20 이하인 문자열이다.

입출력 예시


접근 방식

  1. 입력 값은 전화번호 문자열, 출력 값은 *로 가린 문자열이다.
  2. 전화번호의 뒤에서 4자리만 가져온다.
  3. 나머지 자리의 길이만큼 *을 출력하고 2.의 번호를 붙인다.

해결 방법

  1. String.substring을 사용하여 전화번호 뒤 4자리를 가져온다.
  2. string.repeat을 사용하여 (전화번호 길이-4)까지 반복문을 사용하여 *을 입력한다.
  3. String.concat을 사용하여 * 뒤에 전화번호 4자리를 붙인다.
  4. 결과를 출력한다.

코드

function solution(phone_number) {
  let answer = "";
  // 전화번호의 마지막 4자리
  let lastFour = phone_number.substring(phone_number.length - 4);

  // 전화번호 길이-4 만큼 *을 반복하고 그 뒤에 마지막 4자리를 붙임
  answer = "*".repeat(phone_number.length - 4).concat(lastFour);

  return answer;
}

시행착오

초기 코드

function solution(phone_number) {
  let answer = '';
  let stars = '';
  
  for (let i=0; i<phone_number - 4; i++) {
    stars += '*';
  }
  
  answer = stars.concat(phone_number.substring(phone_number.length-4))
  
  return answer;
}

개선 과정

  • "*" 출력
    • 초기 구현 방식에서는 문자열을 담을 변수를 따로 선언하고, 그 안에 phone_number.length - 4만큼의 을 입력하였다.
    • 하지만, String.repeat() 메서드를 사용하여 쉽게 반복해서 *을 출력할 수 있었다.
	// AS-IS
	let stars = '';
	stars = for(let i=0; i<phone_number.length-4; i++) {
      stars += '*';
    }

	// TO-BE
	'*'.repeat(phone_number.length - 4);

더 개선할 수 있는 방법

  • 전화번호 문자열 자르기
    • 초기 구현 방식과 개선한 방식은 substring을 사용하여 문자열을 잘랐다.
      따라서, 뒷 문자열을 자르기 위해 전체 문자열의 길이에서 뺀 값을 계산해야 했다.
    • 하지만 Array.slice()를 사용하면 단순하게 인덱스를 음수로 지정해서 해당 문자열을 자를 수 있다.
	// AS-IS
	phone_number.substring(phone_number.length - 4);

	// TO-BE
	phone_number.slice(-4);
  • 문자열 합치기
    • 초기 구현 방식과 개선한 방식은 concat을 사용하여 문자열을 합쳤다.
    • 하지만, + 연산자는 피연산자가 문자열이면 문자열 합치기를 수행하기 때문에 코드가 더 간결해질 수 있다.
	// AS-IS
	'*'.repeat(phone_number.length - 4).concat(phone_number.substring(phone_number.length - 4);
    
	// TO-BE
    '*'.repeat(phone_number.length - 4) + phone_number.slice(-4);

주요 개념

  • 문자열의 메서드

    • String.slice(), String.substring()
    • String.repeat()
    • String.concat()
  • + 연산자

profile
쥐눈(Jin Hoon)

0개의 댓글