Algorithm/Programmers

Programmers / Level 1 / 핸드폰 번호 가리기

Gyuri 2022. 5. 29. 22:29

[문제설명]

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

[제한사항]

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

[입출력 예]

 

 

class Solution {
    public String solution(String phone_number) {        
        String star = phone_number.substring(0, phone_number.length()-4); // *로 변경할 문자        
        String noStar = phone_number.substring(phone_number.length()-4, phone_number.length()); // *로 변경 X
        
        String answer = star;
        
        for(int i=0; i<star.length(); i++) { // *로 변경할 문자 
            char c = star.charAt(i); 
            answer = answer.replace(c, '*'); // 모두 *로 변경
        }
        answer = answer + noStar;
        
        return answer;
    }
}

 

쉬울 줄 알았는데, 생각보다 푸는데 오래 걸린 문제

아직 문자열 제거나 추출 메소드를 사용하는게 익숙치 않아 연습을 더 많이 해야할 것 같다.

내가 작성한 코드 말고 더 좋은 코드가 있을 것 같아 찾아봐야겠다

 


다른 사람 코드들 참고해서 좀 더 짧고 쉽게 수정해본 코드이다.

굳이 star, noStar로 따로 변수를 생성할 필요 없이 phone_number 전체를 도는 for문 안에서

뒤에 4자리와 그 외를if-else 문으로 구분해주면 훨씬 편하다.열공!!..

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) { // 4자리수 전까지
                answer += "*"; // *로 변경
            }
            else { // 그 외
                answer += phone_number.charAt(i);
            }
        }
        
        return answer;
    }
}