코딩 테스트/Java

[프로그래머스]Level 1 : 핸드폰 번호 가리기(JAVA)

반응형
핸드폰 번호 가리기
문제 설명

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

제한 조건
  • s는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "*******4444"
"027778888" "027778888"
코드
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        for(int i=0; i<phone_number.length(); i++){
           if(phone_number.length()-i > 4){
                answer += "*";
            }else{
                char ch = phone_number.charAt(i);
                answer += Character.toString(ch);}
        }
        return answer;
     }
}
해설

나는 phone_number - x = 4를 생각해서 x의 값을 구해서 x값이 길이가 4보다 클 때 빈 문자열 answer에 "*"를 하나씩 추가해주는 방법을 생각해서 풀었다.

문제를 해결하고 다른 사람들의 정답을 보니 정말 허탈했다.

정규식을 사용해서 1줄로 끝내는 사람, subString을 사용해 간단하게 끝내는 사람. 아직 가야 할 길이 멀다.

코드를 작성하기 전에 일단 먼저 어떤 식으로 설계를 할지 생각해야 하는 습관을 가져야겠다.

 

수정한 코드
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        for(int i=0; i<phone_number.length() - 4; i++) {
            answer += "*";
        }
        return answer + phone_number.substring(phone_number.length() - 4);
    }
}

 

phone_number 길이 -4 만큼 "*"로 채워준후 

substring 메서드를 이용해서 phone_number 끝 4자리를 answer에 추가했다.

 

출처 : 프로그래머스, https://programmers.co.kr/learn/courses/30/lessons/12948

반응형