🌟 문제설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한
나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
🌟 제한 조건
- s는 길이 4 이상, 20이하인 문자열입니다.
🌟 입출력 예
phone_number | return |
"01033334444" | "********4444" |
"027778888" | "*****8888" |
🌟 나의 문제 풀이
function solution(phone_number) {
var answer = "";
let star = "*".repeat(phone_number.length - 4);
answer = star + phone_number.slice(-4);
return answer;
}
전체 문자열 길이의 마지막 4글자를 제외한 길이만큼 repeat()을 이용하여 *을 반복한 후에 slice()를 이용하여 이어 붙이기!
🌟 다른 사람 문제 풀이
function hide_numbers(s){
// 4개의 숫자를 제외한(?=\d{4}) 전방의 숫자들 탐색 \d
return s.replace(/\d(?=\d{4})/g, "*");
}
정규식이용... 이건 아직 잘 모르겠다ㅜ
전방탐색(lookahead)패턴은 일치 영역을 발견해도 그 값을 반환하지 않는 패턴
전방탐색 패턴의 구문은 ?=로 시작하고 등호(=) 다음에 오는 문자가 일치하는 영역에서 제외
전방탐색 표현식을 통해 패턴을 그룹화(4개의 숫자)해서 반환하지 않게 하고 그 앞의 나머지 숫자들을 지정 해주면 된다. 다시 말해 그룹화를 제외한(?=\d{4}) 앞의 패턴을 모두 지정
🌟 활용 메서드
- 정규표현식: "특정 패턴의 문자열"을 찾기 위한 표현 방식
더보기
/ / 패턴을 쓸공간
/g는 모든 문자열에 대해서 적용. g를 쓰지않으면 한개의 문자에 대해서만 적용
\d는 모든 숫자 [0-9]
x(?=y) : y에 대한 조건을 허용하는 것을 뒤따라오는 x에만 대응된다. 대응 되면 x의 값을 바꾼다.
x(?!y) : x에 대한 조건을 허용하는 것을 뒤따라오는 y에만 대응된다. 대응 되면 x의 값을 바꾼다.
{n} 앞 표현식이 n번 나타나는 부분에 대응된다. 반드시 양의 정수
("문자열").replace(/정규표현식/, "대체문자열") => "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환
- repeat(반복횟수): 지정된 횟수만큼 반복
- slice(): 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용
- 첫 번째 인자: 시작 index, 두 번째 인자: 종료 index => 시작index ~ 종료 index 값 복사하여 반환
- 두번째 인자를 넘기지 않으면, 시작 인덱스가 가리키는 값부터 배열의 마지막 값까지 모두 복사
- 첫번째 인자도 넘기지 않으면, 배열의 처음 값부터 마지막 값까지 전체를 복제
- 시작 index나 종료 index가 음수 => 배열의 끝에서부터의 길이 나타냄
'알고리즘' 카테고리의 다른 글
[프로그래머스 / 코딩테스트 연습] 2016년 (0) | 2023.04.10 |
---|---|
[프로그래머스 / 코딩테스트연습] 행렬의 덧셈 (0) | 2023.04.07 |
[프로그래머스 / 코딩테스트 연습] 없는 숫자 더하기 (0) | 2023.04.07 |
[프로그래머스 / 코딩테스트 연습] 두 정수 사이의 합 (0) | 2023.04.07 |
[프로그래머스/코딩테스트연습] 가운데 글자 가져오기 (0) | 2023.04.07 |
댓글