
public String solution(String phone_number) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < phone_number.length() - 4; i++) {
builder.append('*');
}
for (int i = (phone_number.length() - 4); i < phone_number.length(); i++) {
builder.append(phone_number.charAt(i));
}
return builder.toString();
}
장점:
Java 8 이상 호환 가능
비교적 직관적이고 버전 제약 없음
단점:
public String solution(String phone_number) {
int length = phone_number.length();
String asterisk = "*".repeat(length - 4);
String lastFour = phone_number.substring(length - 4);
return asterisk + lastFour;
}
phone_number.length(): 전체 길이
substring(length - 4) : 뒤에서 4자리만 추출
"*".repeat(length - 4): 앞부분을 *로 채움 (Java 11 이상)
asterisk + lastFour: 붙여서 최종 문자열 만듦
장점:
가장 깔끔하고 간결함 (읽기도 쉽고 쓰기도 쉬움)
가독성 좋음
단점:
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); // 문자 배열을 다시 문자열로 변환해서 반환
}
}
장점:
Java 8 이상에서도 잘 동작
문자열 수정 작업에 효율적 (기존 문자열을 배열로 바꿔 직접 수정)
단점:
초보자에게는 약간 낯설 수 있음
StringBuilder보다 가독성은 약간 떨어질 수 있음