[Java] 자바 알고리즘, 프로그래머스 핸드폰 번호 가리기(마스킹)

핸드폰 번호 가리기


문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.

전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.


제한 조건

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


입출력 예

phone_number return

01033334444 *******4444

027778888         *****8888


문제풀이


1
2
3
4
5
6
7
8
9
10
11
class Solution {
  public String solution(String phone_number) {
      String answer = "";
      char[] charList = phone_number.toCharArray();
      for(int i =0; i<phone_number.length()-4; i++){
          charList[i]='*';
      }
      answer = new String(charList);
      return answer;
  }
}
cs


뒷자리 4자리를 빼고 전부 ** 마스킹처리(삐처리)를 해야하므로 for문을 돌릴때 4번 전에서 멈추면 된다. 전화번호 배열의 길이에서 4를 뺸 횟수만 별표(*) 마스킹처리를 하면 된다!. 그렇게 변환된 배열을 String 생성자안에 넣게되면 오버로딩된 String 생성자에 의해서 char배열이 String객체로 반환된다!


다른사람의 풀이


1
2
3
4
5
6
7
8
9
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);
  }
}
cs


정말 간단한 코드네요.. 저도 사실 저 생성자 부분을 return문에 바로 두면 되긴하지만 정석대로 answer에 담았지만 이분은 String.valueOf메소드를 사용하셨네요. valueOf메소드를 잠깐 설명하자면 저 괄호안에 null을 넣게되면 null이라는 문자열이 생기게 됩니다. 즉 괄호안에 들어가는 데이터를 문자열로 반환합니다. ch는 char 배열이므로 new String(ch) 한것과 같은 결과를 낳게 됩니다. for문을 4번전에서 멈추었네요. 기본 알고리즘은 저와 비슷한것 같습니다.


문제는 쉽지만 여기서 중요한 개념이 등장합니다. 마스킹(masking)이라는 개념인데요. 프로그램이나 어떤 홈페이지 혹은 시스템을 만들때 관리자조차 DB에서 조회를 할때 접근하지 말아야할 정보가 있습니다. 예를 들어 비밀번호같은 경우는 모두 hashcode를 이용해 암호화처리됩니다. 여러가지 개인정보도 모두 이렇게 처리가 되는데 이와 비슷한 개념이 마스킹입니다. 이러한 마스킹이 필요한 정보는(물론 디비에는 순수값이 들어갈테지만) 출력되어질때 본인만 확인 가능한 정보만을 노출하고 나머지는 삐처리하는 기법인데요. 흔히들 보셨을 것입니다. 아이디를 찾는데 뒷자리 몇개는 별표로 쳐져있다거나 하는 출력화면을요.. 이문제에서 등장하는 개념입니다.

댓글

Designed by JB FACTORY