알고리즘 - 핸드폰 번호 가리기

Wonhee 📘·2022년 3월 14일
0

JAVA_알고리즘

목록 보기
8/21
post-thumbnail

알고리즘 문제 "핸드폰 번호 가리기"를 풀어보았습니다.

문제 설명

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

제한사항

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

문제 풀이

phone_number에 담겨있는 문자열을 *로 바꿔주지만 마지막 4자리만 빼고 바꿔주면 되겠다싶은 생각으로 문제를 해결했다.

class Solution {
    public String solution(String phone_number) {
        StringBuilder answer = new StringBuilder (phone_number);
        //문자열에서 내가 표현하고자 하는 자릿수만큼 -해준다.
        for(int i = 0; i < phone_number.length()-4; i++){
        //0번부터 빼준 자릿수까지 \*로 변경해준다.
            answer.setCharAt(i, '*');
        }
        //변경한 배열을 다시 String 형태로 변경해준다.
        return answer.toString();
    }
}

문자열을 String이 아닌 StringBuilder로 만들어 주어야한다.
String은 기존 문자열을 수정할수가 없기때문이다.
StringBuilder answer = new StringBuilder (phone_number); << 이 코드로
변경할 수 있는 문자열 준비는 끝이다.
이제 setCharAt() 메소드를 이용하여 문자열에 값을 변경해주면 된다.
메소드 사용법은
answer.setCharAt(3, "*") 로 예시를 든다면
answer에 index값 3번째의 값을 *로 변경한다는 방식이다.
입출력 예 1 번으로 위 코드를 해석하자면
01033334444 의 length 값은 11다.
12에서 내가 표현하고자하는 자릿수 만큼 빼주면 되기에 length -4 를 해주어 7이 되게끔 설정하면 for문은 index0번째부터 6번째 까지 *로 변경하게된다.
변경된 값을 다시 String 형태로 변경해주어 return으로 보내준다.

다른 사람의 풀이

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

좀더 깔끔하고 효율적인 방법인것 같아 참고용으로 포스팅하니 도움이 되시길 바라겠습니다.

profile
오늘 걷지 않으면 내일은 뛰어야한다 🚶‍♂️ 🏃‍♀️

0개의 댓글