개발 공부 기록
728x90

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

두가지 방식으로 풀었다.

첫번째는 if문을 잔뜩 사용했고, 두번째는 정규식을 사용해 깔끔하게 풀었다.

이 기회를 통해 정규식을 어떻게 사용하는지 조금이나마 알 수 있었다.

 

if문 사용 풀이

public class recommend_id {
    public static String solution(String new_id) {

        String answer;
        answer = new_id.toLowerCase();

        char[] step1_arr = answer.toCharArray();
        StringBuilder step2 = new StringBuilder();
        for(char c : step1_arr) {
            if((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_' || c == '.' || c == '-')
                step2.append(c);
        }

        answer = step2.toString();
        while(answer.contains("..")) answer = answer.replace("..", ".");

        if(answer.startsWith(".")) answer = answer.substring(1);
        if(answer.endsWith(".")) answer = answer.substring(0, answer.length() - 1);

        if(answer.length() == 0) answer = "a";

        if(answer.length() >= 16) {
            answer = answer.substring(0, 15);
        }
        if(answer.endsWith(".")) answer = answer.substring(0, answer.length() - 1);

        while(answer.length() < 3) {
            answer += answer.charAt(answer.length() - 1);
        }

        return answer;
    }
}

정규식 사용 풀이

public class recommend_id_정규식 {
    public static String solution(String new_id){

        String id = new_id.toLowerCase();

        id = id.replaceAll("[^-_.a-z0-9]", "");
        id = id.replaceAll("[.]{2,}", ".");
        id = id.replaceAll("^[.]|[.]$", "");

        if(id.equals(""))
            id += "a";

        if(id.length() >= 16) {
            id = id.substring(0, 15);
            id = id.replaceAll("[.]$", "");
        }

        while(id.length() < 3)
            id += id.charAt(id.length() - 1);

        return id;
    }
}
728x90
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!