[오늘의 문제] 핸드폰 번호 가리기

shlim55·2025년 5월 23일

코딩테스트

목록 보기
60/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/12950

문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 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 = "";
        
        // 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴
        
        // 뒤에 네자리 빼고 잘라낸다.
        String str1 = phone_number.substring(0, phone_number.length() - 4);
        // 나머지 글자 
        String str2 = phone_number.substring(phone_number.length() - 4);
        
        String [] arr = new String[str1.length()];// str1을 배열에 저장 
    
        for (int i = 0; i < arr.length; i++) {            
            arr[i] = str1.charAt(i)+"";        
        }
        // 그다음에 * 로 변환한다.   
        for(int i = 0; i < arr.length; i++){
            answer += arr[i].replace(arr[i], "*");// 그 다음에 answer 배열에 저장 
        }

        answer += str2;// 마지막으로 str2저장 
        return answer;
    }
}

생각은 다 맞다.
전화번호 뒤 네자리 제외 하고 str1 변수에 저장
나머지 뒤 네자리는 str2 변수에 저장한다.

그리고 스트링 배열에 str1글자 하나하나 arr배열에 저장후

다시 arr 원소 하나하나 *로 변환하여 answer 배열에 저장 한다.

그다음에 answer 배열에 str2, 마지막 네글자에 붙여 넣는다.

뭔가 비교적 다른 사람들 풀이에 비해 좀더 코드문이 많다.

다른 사람의 풀이

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);
  }
}

뒤에 네글자 빼고 다 '*'로 바꾼 후 스트링 타입으로 형변환

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

이것도 위의 코드문이랑 유사하다.

뒤의 네글자 빼고 다 *로 answer 변수에 저장한 후

마지막 네글자 answer 변수에 저장

profile
A Normal Programmer

0개의 댓글