🤖Algorithm

[프로그래머스] 핸드폰 번호 가리기 Java

Jaeyoung Kim 2022. 7. 18. 09:57
728x90

핸드폰 번호 가리기


문제설명

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


제한조건

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

입출력 예

phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 


기본코드

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        return answer;
    }
}

문제풀이

11자리 숫자가 제공된다고 가정하였을 때, 8자리까지는 문자열 "*"로 출력

나머지는 기본 입력된 숫자 그대로 출력하면 된다.

이를 위해서는 받은 숫자값을 나누고 끝 4자리만 남겨두고 "*"로 변환하고, 뒤는 그대로 출력하면 된다.

이전에 배워두었던 substring 함수를 사용하면 되는 것이다.

 

추가로 문자열 반복 함수 .repeat()를 사용하여 문자열"*"를 반복 출력하였다.

//첫 번째 코드

class Solution {
    public String solution(String phone_number) {
        String star = "*";
        String blank = "";
        for(int i = 0; i<phone_number.length()-3; i++){
            blank = star.repeat(i);
        }
        String real = phone_number.substring(phone_number.length()-4);
        String answer = blank + real;
        return answer;
    }
}

위와 같은 문제 풀이를 통하여 해결을 완료하였으나 코드가 상당히 더러웠다.

다른 사람들의 문제풀이를 보고, 내가 쓸데없이 두 세줄 작성한 코드를 훨씬 깔끔하게 처리할 수 있다는걸 발견하였고

그 방법이 내가 못 할 방법이 아니란 것도 알게되었다.

 

배움을 통하여 기존 코드를 다듬어봤다.

아직 많이 부족하긴 하지만 그래도 초기 코드에 비해서는 훨씬 나아진 것 같다.

개발자의 길은 멀고도 험하다.


Solution.java

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;
    }
}
728x90