PROGRAMMERS/KAKAO

PROGRAMMERES Level 1 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 JAVA

c0mmedes 2022. 7. 21. 17:38
import java.util.*;

class Solution {
    public String solution(String new_id) {
        
        //1
        String answer = new_id.toLowerCase();
        //2
        answer = answer.replaceAll("[^-_.a-z0-9]","");
        //3
        answer = answer.replaceAll("[.]{2,}",".");
        //4
        answer = answer.replaceAll("^[.]|[.]$","");
        //5
        if(answer.equals("")){
            answer += "a";
        }
        //6
        if(answer.length()>=16) {
            answer = answer.substring(0,15);
            answer = answer.replaceAll("[.]$","");
        }
        //7
        if(answer.length()<=2){
             while (answer.length() < 3) {
                answer += answer.charAt(answer.length()-1);
            }
        }
            
        return answer;
    }
}

정규식의 중요성

.toLowerCase() -> 소문자로 바꿔줌

replaceAll("정규식","변환할 문자값")

.replaceAll("[^-_.a-z0-9]","")

^ -> 문자열의 시작을 의미, [] 내에 존재하면 NOT을 의미, 따라서 안에있는 것들 제외하고 공백으로 replace

.replaceAll("[.]{2,}",".");

{2,} -> 2회 이상

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

^[.] -> .으로 문자열의 시작

| > or연산으로 처음이나 끝을 의미

[.]& -> .으로 끝맺음을 의미

.equals() -> == 는 주소를 비교하지만 equals()는 자체를 비교

.substring(0,15)-> 0~14까지만 사용

.substring(3) -> 0~2는 짜르고 3~부터 끝까지 사용

.replaceAll("[.]$","");

[.]$ -> 문자열의 마지막 [.]을 공백으로 replace

 

참조

https://velog.io/@hammii/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%8B%A0%EA%B7%9C-%EC%95%84%EC%9D%B4%EB%94%94-%EC%B6%94%EC%B2%9C-java-2021-KAKAO-BLIND-RECRUITMENT