[프로그래머스] 핸드폰 번호 가리기 문제 풀이(Java)

이하영·2023년 7월 18일
0

코딩테스트

목록 보기
6/21
post-thumbnail

✔ 문제 설명

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


✔ 제한사항

  1. phone_number는 길이 4 이상, 20이하인 문자열입니다.

💬 내 풀이

class Solution {
    public String solution(String phone_number) {
        //phone_number를 두 부분으로 나누어준다.
        String front = phone_number.substring(0,phone_number.length()-4);
        String back = phone_number.substring(phone_number.length()-4,phone_number.length());
        
        //front 부분을 *으로 치환한다.
        front=front.replaceAll("\\d","*");
        
        String answer = front+back;
        return answer;
    }
}
  • phone_number 문자열을 두 부분으로 나눈다.

    • front : 처음부터 뒷 4자리 전까지
      phone_number.substring(0,phone_number.length()-4);
    • back : front 다음부터 마지막까지
      phone_number.substring(phone_number.length()-4,phone_number.length());
  • front 부분을 *으로 치환한다.

    • 전화번호이므로 모두 숫자일 것 → 정규식 \\d 또는 [0-9] 활용!
  • frontback을 결합한다.


⭐ String.substring()

substring(int startIndex)

  • 파라미터 값이 하나일 때는 문자열의 startIndex부터 끝까지의 문자열을 잘라서 반환

substring(int startIndex, int endIndex)

  • 파라미터 값이 두 개일 때는 문자열의 startIndex부터 endIndex 직전까지(endIndex는 포함X)의 문자열을 잘라서 반환

⭐ String.replace()

replace(CharSequence target, CharSequence replacement)

  • 기존 문자 중 지정한 문자를 바꾸고 싶은 문자로 치환
  • 대소문자를 구분하여 치환한다.

replaceAll(String regex, String replacement)

  • 대상 문자열을 원하는 문자 값으로 치환
  • 첫번째 매개변수에 정규식이 들어간다.

⭐ 자바 정규식(0~9 사이의 숫자)

  • 0~9 사이의 숫자를 나타내는 정규식
    • [0-9]
    • \d \\d
      error: illegal escape character
      Java 문자열에서 역슬래시(\)는 이스케이프 문자로 사용되기 때문에
      오류가 난다.
      → 역슬래시 두 개 \\d를 사용해야 한다.
profile
안녕하세요, 웹 개발자 이하영입니다!

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

덕분에 좋은 정보 얻어갑니다, 감사합니다.

답글 달기