-
[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"); } }
정규식 쓰는법 배우기 좋을것 같다
그런데 정규식쓰는거보다 야매로 푸는게 수행속도는 더 빠른느낌?
'알고리즘' 카테고리의 다른 글
[Algorithm/Java] dev matching 로또의 최고순위와 최저순위 (0) 2021.07.14 [Algorithm/Java] kakao 2021 합승택시요금 (0) 2021.07.14 [Algorithm/Java] kakao 2021 순위 검색 (0) 2021.07.14 [Algorithm/Java] dev matching 행렬 테두리 회전하기 (0) 2021.07.14 [Algorithm/Java] kakao 2021 메뉴 리뉴얼 (0) 2021.07.01