알고리즘/프로그래머스

핸드폰 번호 가리기(JAVA)

mrban 2022. 1. 15. 15:11

1. 문제

String phone_number을 매개변수로 받아 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수를 만드시오.

 

2. 제한
phone_number는 길이가 4이상, 20이하이다.
 
3. 정답
class Solution {
    public String solution(String phone_number) {
        char [] answer = phone_number.toCharArray();
        int length = answer.length;

        for (int i = length - 5; i >= 0; i--) {
            if ('0' <= answer[i] && answer[i] <= '9') {
                answer[i] = '*';
            }
        }
        String result = String.valueOf(answer);
        return result;
    }
}

4. 설명

4-1. String으로 들어온 phone_number에 요소 하나하나에 접근하기 위해서는 char 배열로 바꿔줘야한다. 따라서 .toCharArray()함수를 통해 String을 char[] 배열로 바꿔준다.

4-2. char[] 배열의 제일 마지막에서 5번째 앞의 인자부터 시작해서 0번째 인자까지 for문을 돌리는데 숫자가 나온다면 *로 바꿔준다. 만약 배열의 길이가 가장 적은 4라면 int i = -1로 for문을 바로 탈출하여 아무 숫자도 바뀌지 않는다.

4-3. String으로 return 하기 위해서 바뀐 char[] 배열을 String.valueOf()함수를 통해서 다시 String형으로 바꿔주고 return한다.

 

5. 참고

5-1. phone_number의 길이가 최대 20일 수 있기 때문에 숫자 이외의 문자들도 전화번호에 존재할 수 있다고 생각했다. 따라서 뒤의 숫자 4자리를 제외하고 나머지 부분에서 숫자인 경우에만 *로 바꿔주게끔 만들었다. 그 결과로 if문을 추가하였다.

if ('0' <= answer[i] && answer[i] <= '9') {
                answer[i] = '*';
            }

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

부족한 금액 계산하기(JAVA)  (0) 2022.01.15
행렬의 덧셈(JAVA)  (0) 2022.01.15
x만큼 간격이 있는 n개의 숫자(JAVA)  (0) 2022.01.15
평균구하기(JAVA)  (0) 2022.01.15
없는숫자더하기(JAVA)  (0) 2022.01.15