본문 바로가기
카테고리 없음

[프로그래머스, java] 신규 아이디 추천

by 문자메일 2022. 7. 16.

개선 후 답안 제출 버전 (정규표현식 개선 활용)

/*
아이디의 길이는 3자 이상 15자 이하여야 합니다.
아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.
단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.
*/

class Solution {
    public String solution(String new_id) {
        
        String answer = new_id;
        System.out.println("answer = " + answer);
        answer = answer.toLowerCase();
        System.out.println("answer = " + answer);
        answer = answer.replaceAll("[^a-z0-9-._]","");
        System.out.println("answer = " + answer);
        answer = answer.replaceAll("[.]{2,}",".");
        System.out.println("answer = " + answer);
//        if (answer.startsWith(".")) { answer = answer.substring(1); }
//        System.out.println("answer = " + answer);
//        if (answer.endsWith(".")) { answer = answer.substring(0, answer.length()-1); }
//        System.out.println("answer = " + answer);

        answer = answer.replaceAll("^[.]|[.]$","");


        if(answer.equalsIgnoreCase("")) answer="a";

        if(answer.length()>15) answer = answer.substring(0, 15);
        System.out.println("answer = " + answer);
        answer = answer.replaceAll("^[.]|[.]$","");

        while (answer.length()<=2){
            String c = answer.substring(answer.length()-1, answer.length());
            answer = answer + c;
        }
        System.out.println("answer = " + answer);
        return answer;
    }
}

 

 

개선 전 초기 답안 제출 버전 

/*
아이디의 길이는 3자 이상 15자 이하여야 합니다.
아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.
단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.
*/

class Solution {
    public String solution(String new_id) {
        
        String answer = new_id;
        //System.out.println("answer = " + answer);
        answer = answer.toLowerCase();
        //System.out.println("answer = " + answer);
        answer = answer.replaceAll("[^a-z0-9-._]","");
        //System.out.println("answer = " + answer);
        answer = answer.replaceAll("[.][.]+",".");
       // System.out.println("answer = " + answer);
        if (answer.startsWith(".")) { answer = answer.substring(1); }
       // System.out.println("answer = " + answer);
        if (answer.endsWith(".")) { answer = answer.substring(0, answer.length()-1); }
        //System.out.println("answer = " + answer);
        if(answer.equalsIgnoreCase("")) answer="a";

        if(answer.length()>15)
            answer = answer.substring(0, 15);
        //System.out.println("answer = " + answer);
        if (answer.endsWith(".")) { answer = answer.substring(0, answer.length()-1); }
        //System.out.println("answer = " + answer);

        while (answer.length()<=2){
            String c = answer.substring(answer.length()-1, answer.length());
            answer = answer + c;
        }
        //System.out.println("answer = " + answer);
        return answer;
    }
}

 

 

 

 

댓글