Algorithm/programmers

[programmers][Level1][Java] μ‹ κ·œμ•„μ΄λ”” μΆ”μ²œ

youn12 2021. 3. 25. 17:43
✏️ Algorithm.

https://programmers.co.kr/learn/courses/30/lessons/72410
μ œν•œμ‚¬ν•­
μž…μΆœλ ₯ 예


πŸ“‹ Solved.

1. 각각의 단계에 ν•΄λ‹Ήν•˜λŠ” λ‘œμ§μ„ κ΅¬μ„±ν•˜μ—¬ 처리 
2. μ •κ·œμ‹μ„ ν™œμš©ν•˜λ©΄ 더 κ°„λ‹¨νžˆ 될 것같닀.


βœ”οΈ Code.

public String solution(String new_id) {

        String answer = "";

        /*
         * 1. λŒ€λ¬Έμž -> μ†Œλ¬Έμž μΉ˜ν™˜
         * */
        answer = new_id.toLowerCase();

        /*
         * 2. μ†Œλ¬Έμž, 숫자, -, _, . λ₯Ό μ œμ™Έν•œ 문자 제거
         * */
        answer = answer.replaceAll("[^0-9a-z.\\-_]", "");

        /*
         * 3. .문자 2번 연속 -> . ν•˜λ‚˜λ‘œ μΉ˜ν™˜
         * */
        while(answer.indexOf("..") > -1){
            answer = answer.replace("..", ".");
        }

        /*
         * 4. .문자 μ²˜μŒμ΄λ‚˜ 끝에 μœ„μΉ˜ν•  경우 제거
         * */
        if(answer.charAt(0) == '.') {
            answer = answer.substring(1);
        }
        if(answer.length() > 0 && answer.charAt(answer.length()-1) == '.') {
            answer = answer.substring(0, answer.length()-1);
        }

        /*
         * 5. 빈 λ¬Έμžμ—΄ -> a λŒ€μž…
         * */
        if("".equals(answer)) answer = "a";

        /*
         * 6. λ¬Έμžμ—΄μ΄ 16자 이상이면 15문자λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ 문자 제거, 제거 ν›„ . λ¬Έμžκ°€ λ§ˆμ§€λ§‰ 문자면 .문자 제거
         * */
        if(answer.length() >= 16){
            answer = answer.substring(0, 15);
        }
        if(answer.length() > 0 && answer.charAt(answer.length()-1) == '.') {
            answer = answer.substring(0, answer.length()-1);
        }

        /*
         * 7. λ¬Έμžμ—΄μ΄ 2자 μ΄ν•˜λΌλ©΄, λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰ 문자λ₯Ό 길이가 3자 λ λ•ŒκΉŒμ§€ 반볡
         * */
        while(answer.length() <= 2){
            char c = answer.charAt(answer.length()-1);
            answer += c;
        }

        return answer;
    }