❓ 문제
코딩테스트 연습 - 핸드폰 번호 가리기 | 프로그래머스 스쿨 (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
'코딩 테스트 연습 > 프로그래머스 level 1' 카테고리의 다른 글
[프로그래머스] lv1. 콜라츠 추측 (JS) (0) | 2023.07.06 |
---|---|
[프로그래머스] lv1. 음양 더하기 (JS) (0) | 2023.07.06 |
[프로그래머스] lv1. 문자열 내 p와 y의 개수 (JS) (0) | 2023.07.06 |
[프로그래머스] lv1. 나머지가 1이 되는 수 찾기 (JS) (0) | 2023.07.01 |
[프로그래머스] lv1. 자릿수 더하기 (0) | 2023.04.25 |
댓글