출처: https://school.programmers.co.kr/learn/courses/30/lessons/12950
문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number return
"01033334444" "***4444"
"027778888" "*8888"
내가 작성한 코드문
class Solution {
public String solution(String phone_number) {
String answer = "";
// 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴
// 뒤에 네자리 빼고 잘라낸다.
String str1 = phone_number.substring(0, phone_number.length() - 4);
// 나머지 글자
String str2 = phone_number.substring(phone_number.length() - 4);
String [] arr = new String[str1.length()];// str1을 배열에 저장
for (int i = 0; i < arr.length; i++) {
arr[i] = str1.charAt(i)+"";
}
// 그다음에 * 로 변환한다.
for(int i = 0; i < arr.length; i++){
answer += arr[i].replace(arr[i], "*");// 그 다음에 answer 배열에 저장
}
answer += str2;// 마지막으로 str2저장
return answer;
}
}
생각은 다 맞다.
전화번호 뒤 네자리 제외 하고 str1 변수에 저장
나머지 뒤 네자리는 str2 변수에 저장한다.
그리고 스트링 배열에 str1글자 하나하나 arr배열에 저장후
다시 arr 원소 하나하나 *로 변환하여 answer 배열에 저장 한다.
그다음에 answer 배열에 str2, 마지막 네글자에 붙여 넣는다.
뭔가 비교적 다른 사람들 풀이에 비해 좀더 코드문이 많다.
다른 사람의 풀이
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);
}
}
뒤에 네글자 빼고 다 '*'로 바꾼 후 스트링 타입으로 형변환
class Solution {
public String solution(String phone_number) {
String answer = "";
for (int i = 0; i < phone_number.length() - 4; i++)
answer += "*";
answer += phone_number.substring(phone_number.length() - 4);
return answer;
}
}
이것도 위의 코드문이랑 유사하다.
뒤의 네글자 빼고 다 *로 answer 변수에 저장한 후
마지막 네글자 answer 변수에 저장