본문 바로가기

프로그래머스 코딩(자바)/Level 1

Programmers Level 1 - 핸드폰 번호 가리기

728x90

문제 설명

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

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

 

1
2
3
4
5
6
7
8
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        for(int i=0;i<phone_number.length()-4;i++) answer+="*";
        answer += phone_number.substring(phone_number.length()-4);
        return answer;
    }
}
cs

 

  전화번호에서 뒤의 네글자를 제외한 수만큼 *을 출력하고

  뒤에 4자리만 잘라서 붙여준다.

 

1
2
3
4
5
6
class Solution {
    public String solution(String phone_number) {
        return "*".repeat(phone_number.length()-4)
                + phone_number.substring(phone_number.length()-4);
    }
}
cs

 

 repeat()메서드를 이용하여 *을 반복시켰다.

 

1
2
3
4
5
class Solution {
  public String solution(String phone_number) {
    return phone_number.replaceAll(".(?=.{4})""*");
  }
}
cs

 

 정규 표현식을 이용하여 뒤의 4글자를 제외한 문자를 *로 바꿔주었다.  

.  : 임의의 문자 한 개
 (?=.)  : 뒷쪽에 임의의 문자 한 개를 제외하고 선택
{숫자} : 숫자 만큼의 자릿수
.(?=.{4}) :  뒤쪽에서 임의의 문자 4개를 제외한 임의의 문자 한 개 선택

 

정규 표현식 연습

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class App {
    public static void main(String[] args) {
        // 뒤에서 임의의 1문자를 제외한 임의의 문자1개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".(?=.)""*"));
        // 뒤에서 임의의 2문자를 제외한 임의의 문자1개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".(?=.{2})""*"));
        // 뒤에서 임의의 3문자를 제외한 임의의 문자1개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".(?=.{3})""*"));
        // 뒤에서 임의의 4문자를 제외한 임의의 문자1개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".(?=.{4})""*"));
 
        // 뒤에서 임의의 4문자를 제외한 임의의 문자1개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".(?=....)""*"));
 
         // 뒤에서 임의의 4문자를 제외한 임의의 문자2개를 선택해 *로 치환
        System.out.println("1234567890".replaceAll(".{2}(?=.{4})""*"));
    }
}
cs

 

728x90