본문 바로가기
정리/알고리즘

프로그래머스 - 신규 아이디 추천

by Hudini30 2022. 3. 23.

프로그래머스 (카카오 블라인드 2021) - 신규 아이디 추천

해당 문제는 정규식을 통해 문제에 나온 단계별로 변경을 진행했습니다. 딱 7단계만 진행하면 되는지 몰라서 base case의 경우를 정하고 재귀를 통해 풀려고 했는데, 테스트 결과가 제대로 나오지 않아 문제 그대로 7단계만 진행하도록 구현했습니다.
정규식을 잘 쓰면 좋은데, 바로 보고 이해하기가 쉽지 않은경우가 있어 잘 안써서 검색을 통해 정규 표현식을 구해 풀었습니다.

    public String solution(String new_id) {
        //1단계
        String answer = new_id.toLowerCase();
        // 2단계
        answer = answer.replaceAll("[^a-z0-9_|\\-|.]", "");
        // 3단계
        answer = answer.replaceAll("\\.{2,}", ".");
        // 4단계
        answer = answer.startsWith(".") ? answer.substring(1) : answer;
        answer = answer.endsWith(".") ? answer.substring(0, answer.length() - 1) : answer;
        // 5단계
        answer = answer.isEmpty() ? "aaa" : answer;
        // 6단계
        answer = answer.length() > 15 ? answer.substring(0, 15).endsWith(".") ? answer.substring(0,14) : answer.substring(0,15) : answer;
        // 7단계
        answer = answer.length() == 1 ? answer + answer + answer : answer.length() == 2 ? answer + answer.charAt(1) : answer;

        return answer;
    }

댓글