알고리즘
[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");
}
}
정규식 쓰는법 배우기 좋을것 같다
그런데 정규식쓰는거보다 야매로 푸는게 수행속도는 더 빠른느낌?