프로그래머스/level1

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

wave_m 2020. 9. 17. 20:51
728x90

문제 설명 : 

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

 

제한 조건 : 

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

입출력 예 : 

phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        String[] a = phone_number.split("");
        for(int i= 0; i<a.length; i++){
            if(i < (a.length-4)) {
                answer += "*";
            } else {
                answer += a[i];
            }
        }
        return answer;
    }
}

 

알고리즘 풀이 :

1. 핸드폰 번호를 가린 answer 변수를 String 으로 객체 생성

2. split을 사용하여 phone_number을 하나씩 잘라서 a라는 문자열 배열에 저장

3. 총 answer의 길이가 a.length와 동일하기에 for문을 사용

1) i < a.length-4 일 때

- 맨 뒷 자리 4자리수만 빼고 가리면 되기에 "*"을 answer에 추가

2) i < a.length-4 가 아닐 때

- 맨 뒷 자리 4자리 수는 가리면 안 되기에 a[i]에 해당하는 수를 answer에 추가

3. answer를 return을 사용하여 반환

 

 

[ python 풀이 ]

def blind(a) :
    answer = ""
    for i in range(0, len(a)) :
        if i < len(a)-4 :
            answer += "*"
        else :
            answer += a[i]
    return answer

print(blind("01033334444"))

 

 

- 자바를 공부하던 중 string과 stringbuilder, stringbuffer의 차이점을 알고 stringbuilder 구성한 풀이(2020.12.22 추가)

import java.util.*;
class Main {
  public static void main(String[] args) {
    String phone = "01011112222";
    StringBuilder result = new StringBuilder();

    for(int i=0; i< phone.length(); i++){
      if(i < phone.length() - 4){
        result.append(phone.charAt(i));
      } else {
        result.append("*");
      }
    }

    System.out.println(result);
  }
}
728x90