[프로그래머스_ Java_Lv1]

박경희·2024년 2월 4일

코딩테스트

목록 보기
37/69

StringBuilder + charAt

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 이상 호환 가능

  • 비교적 직관적이고 버전 제약 없음

단점:

  • 문자 하나하나 append → 약간의 오버헤드

substring() + repeat()

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: 붙여서 최종 문자열 만듦

장점:

  • 가장 깔끔하고 간결함 (읽기도 쉽고 쓰기도 쉬움)

  • 가독성 좋음

단점:

  • Java 11 이상에서만 사용 가능 (String.repeat() 때문)

다른 풀이 - char[] + valueOf()

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보다 가독성은 약간 떨어질 수 있음

0개의 댓글