프로그래머스 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})", "*");
}
}
정규식으로 간단하게 푼 풀이도 있네요.