[CodingTest] 핸드폰 번호 가리기

hye·2023년 2월 15일
0

AlgorithmTest

목록 보기
12/95

📖 Exam

문제 설명

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

제한 조건

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

입출력 예

phone_numberreturn
"01033334444""***4444"
"027778888""*8888"

✍ Answer

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        String[] arr = phone_number.split("");
        for(int i = 0; i< arr.length-4; i++) {
           arr[i] = "*";
        }
        for(int i = 0; i< arr.length; i++) {
           answer+=arr[i];
        }
        return answer;
    }
}

💡 Realization

  • char 배열을 만들고 그걸 String화 된다는게 나에겐 신박한 개념...

String.valueOf(char[] data)

  • 이 메서드는 문자 배열 인수에 포함된 동일한 문자 시퀀스를 나타내는 새로 할당된 문자열을 반환합니다.
class Solution {
  public String solution(String phone_number) {
     char[] ch = phone_number.toCharArray();
     for(int i = 0; i < ch.length - 4; i ++){
         ch[i] = '*';
     }
     return String.valueOf(ch);
  }
}

RegExp 정규식

class Solution {
  public String solution(String phone_number) {
    return phone_number.replaceAll(".(?=.{4})", "*");
  }
}

참고사이트: https://earth-ing.tistory.com/entry/Java-replaceAll-특수문자-제거-숫자빼고-문자빼고-총-정리

substring

  • 순간 문제 반대로 이해해서 이게 왜 이러지 한참 고민했네.
    for문 한번 더 돌리는 것보다 이게 깔끔쓰
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;
    }
}

참고사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12948/solution_groups?language=java

profile
Junior Backend Developer

0개의 댓글