알고리즘

프로그래밍 문제 09번 핸드폰 번호 가리기

DoosanBaek 2022. 9. 24. 18:42

언어선택: Java

문제번호 9

문제 설명

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

제한 조건
  • phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예시
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

Solution.java 제출한 코드

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        String[] num = phone_number.split("");
        int len = num.length;
        for (int i = 0; i < len; i++) {
            if (i < len - 4) {
                answer += "*";
            } else {
                answer += num[i];
            }
        }
        return answer;
    }
}

 

제출한 코드 도출 과정

String[] num = phone_number.split("");

String 타입의 배열로 num 을 선언. 

phone_number를 split을 이용해 쪼개서 담는다.

 

int len = num.length;

num 의 길이를 int 형 타입으로 len에 담고

 

for(int i=0; i<len; i++){
}

 

반복문 for문을 이용해 phone_number의 길이만큼 반복문을 돌린다.

(len 에는 num.length가 담겨있는데, num 에는 phone_number가 쪼개저서 담겨있으므로

i<len;에서 len이 phone_number의 길이와 같다.)

 

 if (i < len - 4) {

if 문을 이용하여 i가 phone_number의 길이에서 -4를 뺀 수보다 작을때까지 

 

 answer += "*";

answer 변수에 *을 넣어준다.

 

} else {
    answer += num[i];            
}

if( i<len -4 ) 의 조건, 즉 i가 phone_number의 길이에서 -4를 뺀 수보다 작지 않고 커지는 순간

반복문 for문을 통해 문자를 하나씩 순서대로 넣어준다. 

( String[] num = phone_number.split("") 으로  num 에는 phone_number가 쪼개저서 담겨있으므로 

반복문이 돌면서 num에 하나씩 순서대로 들어간다.)

 

return answer;

위 값을 answer로 입력한다.

 

지역변수로 문제에서 주어진 핸드폰 번호를 String 타입으로 선언하고

위 코드를 실행할 수 있도록 main 메소드를 만들어 실행해보면,

class Solution09 {
    public static  String phone_number = "01033334444";
    public String solution09() {
        String answer = "";
        String[] num = phone_number.split("");
        int len = num.length;
        for(int i = 0; i < len; i++) {
            if (i < len - 4) {
                answer += "*";
            } else {
                answer += num[i];
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Solution09 sl = new Solution09();
        String v = sl.solution09();
        System.out.println(v);
    }
}

문제에서 주어진 상황대로, 끝자리 4444 만 노출되는것을 확인할 수 있다.