DEV

[javaStudy] 핸드폰 번호 가리기

찻잔속청개구리 2023. 11. 19. 12:56
반응형

1. 인증사진(2023-11-19)

 

2. 문제

문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

3. 답

 

1. String 자료형을 마스킹하는 문제

2. replaceAll 메서드와 정규식을 이용했다.

3. 전방탐색 어설션(positive lookahead assertion)으로 4개의 문자를 추출하고, replaceAll 메서드로 4개의 문자를 *로 대체한다.

 

class Solution {
    public String solution(String phone_number) {

        String answer = phone_number.replaceAll(".(?=.{4})", "*");
        return answer;
    }
}

 

4. 추가공부

  • 전방탐색 어설션(positive lookahead assertion)이란?
    • String 클래스의 메서드인 replaceAll를 이용할 때 주어진 문자열에서 정규 표현식 패턴에 일치하는 부분을 찾아서 해당 부분을 다른 문자열로 대체한다.
    • 기본적인 구조는 (?=...) 인데, ...에 패턴을 넣으면 된다.
    • .를 맨앞에 두면 어떤 문자든 일치한다는 뜻이고, 마지막 네 자리를 제외한 나머지 부분을 별표로 대체하게 된다.

 

반응형

'DEV' 카테고리의 다른 글

[javaStudy] 가운데 글자 가져오기  (0) 2023.12.10
[javaStudy] 문자열 내 p와 y의 개수  (1) 2023.12.03
[Python] if구문 실습 3개  (0) 2022.01.29
[Python] 파이썬 거북이 소환 2  (0) 2022.01.28
[Python] 리스트  (0) 2022.01.27