[프로그래머스]핸드폰 번호 가리기 (JAVA)
업데이트:
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- 제한 조건
s는 길이 4 이상, 20이하인 문자열입니다.
- 예시
풀이
class Solution {
public String solution(String phone_number) {
String answer = "";
for(int i=0; i<phone_number.length(); i++){
if(i<phone_number.length()-4){
answer += "*";
}else{
answer += phone_number.charAt(i);
}
}
return answer;
}
}
- 실행 결과
수행 시간이 너무 오래 걸린다..
다른 사람의 풀이(char->String)
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);
}
}
- 실행 결과
String.toCharArray()로 문자열을 char형 배열로 바꾼다.
그 후 배열의 길이-4(마지막 4자리 숫자)보다 작은 경우 값을 ‘*‘로 변경한다.
마지막 return 시 String.valueOf()를 통해 String 타입으로 변경해 준다.
이 방법은 수행 시간이 매우 단축된다.
첫 번째 방법으로 풀 경우 문자열을 조합하는 데 시간이 많이 드는 건지, for문 안에 if문을 넣어줘서 시간이 많이 드는 건지 모르겠다.😰😰
풀이
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;
}
}
- 실행 결과
위에 코드를 참고해서 for문의 반복 횟수를 줄이고 조건문을 없앴더니
수행 시간이 많이 단축됐다.😉
하지만 아직도 위에 코드보다 수행 시간이 오래 걸리는 것을 보면
아마 문자열 조합 작업에서 시간이 더 오래 소요되는 걸까..?
관련 자료를 한번 찾아봐야겠다.😢
다른 사람 풀이(정규식)
class Solution {
public String solution(String phone_number) {
return phone_number.replaceAll(".(?=.{4})", "*");
}
}
- 실행 결과
정규식을 사용해서 한 줄로 코딩을 끝냈다..😰
공유하기
Twitter Google+ LinkedIn
댓글남기기