프로그래머스 Lv.1| Java - 핸드폰 번호 가리기

문제

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

제한 조건

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

입출력 예

phone_number return
“01033334444” ***4444”
“027778888” “*****8888”

풀이

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

정답이 안나와서 헤맸는데 부등호를 반대로 쓴거였다…

다른 사람의 풀이

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);
  }
}

for문에서 ch.length-4를 바로 사용하려면 toCharArray를 쓰면 되는군요. 방법을 탐구하고 있었는데 마침 원했던 풀이를 작성한 답이 있어서 기억하려고 가져왔습니다.

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

정규식으로 간단하게 푼 풀이도 있네요.

comments powered by Disqus