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

리트리버J

·

2020. 12. 20. 14:00

728x90

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

 

1. String [subSequence(), replace() 이용방법]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public String solution(String phone_number) {
        String answer = phone_number;
        // *을 길이만큼 추가해야 하므로,
        // String보다 StringBuffer를 이용하여 메모리소모를 줄인다.
        StringBuffer star = new StringBuffer();
        for(int i=0; i<answer.length()-4; i++){
            star.append('*');
        }
        // 1. subSequence(star, end)메소드로 start <= (길이) < end 만큼 자른 후에,
        // 2. replace(CharSequence, CharSequence)메소드로 *로 바꿔준다.
        // ※ StringBuffer는 CharSequence를 implements하고 있기 때문에
        //    파라미터로 대입이 가능하다.
        return answer.replace(answer.subSequence(0, answer.length()-4), star);
    }
}
cs

2. String -> Char[] -> String [toCharArray(), valueOf() 이용 방법]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
  public String solution(String phone_number) {
     // toCharArray()메소드로 String -> Char[]로 전환
     char[] ch = phone_number.toCharArray();
     // char[] 길이-4 만큼 반복문
     for(int i = 0; i < ch.length - 4; i ++){
         // 뒷자리 4개를 남겨두고 *로 전환
         ch[i] = '*';
     }
     // return타입이 String이므로 
     // valueOf로 char[] -> String 전환 
     return String.valueOf(ch);
  }
}
cs

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

728x90