더북(TheBook)

잠깐만요

반복문 안에서 문자열을 구성하는데, StringBuilder를 사용해야 하지 않을까요? StringBuilder를 사용하는 목적은 반복문 안에서 쓸데없이 문자열 객체를 많이 만들어 성능을 낮출 우려가 있어서입니다. 이때는 문자열 길이가 3보다 작을 때만 실행되고, 그마저도 1~2회밖에 실행되지 않기 때문에 굳이 StringBuilder를 사용하지 않았습니다.

이제 일곱 단계를 모두 구현했습니다. 모든 단계를 통과하며 구성된 문자열을 반환합니다.

return newId;

이렇게 자바의 내장 라이브러리와 정규표현식을 이용하여 복잡한 문자열 문제를 간단히 해결할 수 있습니다.

 

전체 코드

4장/신규_아이디_추천.java

public class Solution {
    public String solution(String newId) {
        newId = newId.toLowerCase();
        newId = newId.replaceAll("[^a-z0-9\\-_.]", "");
        newId = newId.replaceAll("\\.+", ".");
        newId = newId.replaceAll("^\\.+|\\.+$", "");
        if (newId.isEmpty()) newId = "a";
        if (newId.length() >= 16) {
            newId = newId.substring(0, 15);
            newId = newId.replaceAll("\\.+$", "");
        }
        while (newId.length() < 3) {
            newId += newId.charAt(newId.length() - 1);
        }

        return newId;
    }
}

이 장에서는 문자열을 알아보았습니다. 문자열은 그 자체로도 코딩 테스트의 문제 유형에 자주 등장합니다. 하지만 다른 알고리즘을 사용하는 문제에서도 자주 응용되는 자료 구조이므로 자바의 내장 라이브러리를 다루는 방법에 익숙해집시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.