알고리즘

[Algorithm/Java] kakao 2021 신규아이디 추천

지수쓰 2021. 7. 1. 16:55
반응형
package pgms;

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

        //주석처리한방식은 시간은 더빠름
        //정규식이 보기에 훨 간편해보임
        //3~15
        // 소문자, 숫자, - _ .
        // .는 처음과 끝에 사용 X 연속사용 X
        String answer = "";
        new_id = new_id.toLowerCase();

//        StringBuilder sb = new StringBuilder(new_id.length());
//
//        // step 2
//        for(int i=0; i<new_id.length(); i++){
//            char t = new_id.charAt(i);
//            if(t>='a' && t<='z') sb.append(t);
//            else if(t=='-')sb.append(t);
//            else if (t=='_')sb.append('_');
//            else if(t=='.')sb.append('.');
//        }
//        new_id = sb.toString();
        new_id = new_id.replaceAll("[^-_.a-z0-9]","");


        //step 3
        new_id = new_id.replaceAll("[.]{2,}",".");

        System.out.println(new_id);

//        if(new_id.length()==1 && new_id.charAt(0)=='.'){
//            new_id = "a";
//        }
//        else {
//            //step 4
//            if(new_id.charAt(0)=='.'){
//                new_id=  new_id.substring(1);
//            }
//            if(new_id.charAt(new_id.length()-1)=='.'){
//                new_id = new_id.substring(0,new_id.length()-1);
//            }
//            System.out.println(new_id);
//
//        }
//        System.out.println(new_id);
        new_id = new_id.replaceAll("^[.]|[.]$","");

        //step 5
        if(new_id.length()==0){
            new_id="a";
        }

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

//        System.out.println(new_id);
//        //step 6
//        if(new_id.charAt(new_id.length()-1)=='.'){
//            new_id = new_id.substring(0,new_id.length()-1);
//        }
//
//        System.out.println(new_id);
        //step 7
        if(new_id.length() <=2){
            while(new_id.length()<3){
                new_id+= new_id.charAt(new_id.length()-1);
            }
        }
        answer = new_id;

        return answer;
    }

    public static void main(String[] args) {
        solution("abcdefghijklmn.p");
    }
}

 

정규식 쓰는법 배우기 좋을것 같다

그런데 정규식쓰는거보다 야매로 푸는게 수행속도는 더 빠른느낌?