본문 바로가기
코딩 테스트 연습/프로그래머스 level 1

[프로그래머스] lv1. 핸드폰 번호 가리기 (JS)

by 카누가 좋아요 2023. 7. 6.

❓ 문제

코딩테스트 연습 - 핸드폰 번호 가리기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

💡 해결하기

1️⃣

주어지는 phone_number의 길이에서 4를 뺀 만큼의 범위의 숫자들은 모두 *로 채우고, 그 뒤의 4개의 숫자들은 잘라내어 그대로 이어붙이는 식으로 코드를 작성한다.

 

💻 JS로 코드 작성하기

 

function solution(phone_number) {
  return (
    Array(phone_number.length - 4)
      .fill("*")     // 뒤의 4자리를 제외한 나머지 부분은 모듀 *로 채움.
      .join("") + phone_number.slice(-4)     // 뒤의 4자리
  );
}

 

 

여기서부터는 다른 사람의 풀이이다.

 

2️⃣ repeat 메서드를 사용하여 위 코드보다 더 간단히 작성하기

문자열.repeat(반복 횟수) 처럼 repeat 메서드를 사용하면 위 방식보다 더 간단하게 원하는 개수만큼의 *을 만들어낼 수 있다. 마지막 4개 숫자는 잘라내어 이어붙이는 것은 동일한다.

 

💻 JS로 코드 작성하기

 

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

 

 

3️⃣ 정규표현식 사용하기

💻 JS로 코드 작성하기

 

function solution(s) {
  return s.replace(/\d(?=\d{4})/g, "*");
}

 

위 코드에서의 정규식을 분석해 보겠다.

/\d(?=\d{4})/g

➡️ 전체적인 구조 분석

처음 /시작 기호이고, 끝부분쯤에 나오는 2번째 /종료 기호이다.

→ 그 사이에 있는 \d(?=\d{4})패턴에 해당한다.

→ 맨 끝에 있는 g정규식 플래그에 해당한다. g는 global로, 문자열 내의 모든 패턴을 검색한다는 의미이다.

replace 메서드를 사용하였으므로 정규표현식에 해당하는 문자열대체 문자열인 "*" 로 변환한다.

 

➡️ 정규식 부분 분석

\d숫자와 매칭된다.

(?=)전방 탐색 패턴 (lookahead)으로, 숫자 (\d) 다음에 4자리 숫자가 이어지는지를 확인한다.

 

요약하자면, 주어진 문자열에서 숫자를 찾아 그 숫자가 바로 다음에 4자리 숫자로 이어지는 경우 해당 숫자를 "*"로 대체하는 코드이다.

 

📌 참고 사이트

📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제 (tistory.com)

 

📚 JavaScript 정규 표현식 문법 총정리 + 응용 예제

정규 표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은

inpa.tistory.com

& Chat GPT

댓글