Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨 Lv.1 - 신규 아이디 추천(2021 KAKAO BLIND RECRUITMENT)
깝몬 2023. 12. 14. 20:15
class Solution {
    public String solution(String new_id) {
        //1단계
        new_id=new_id.toLowerCase();
        //2단계
        new_id = new_id.replaceAll("[^0-9a-z-_.]","");
        //3단계
        new_id = new_id.replaceAll("\\.+",".");
        //4단계
        if(new_id.length() > 0 && new_id.charAt(0)=='.') new_id = new_id.substring(1);
        if(new_id.length() > 0 && new_id.charAt(new_id.length()-1)=='.')  new_id = new_id.substring(0,new_id.length()-1);
        //5단계
        if(new_id.length()==0) new_id+="a";
        //6단계
        if(new_id.length()>=16) new_id = new_id.substring(0,15);
        //7단계
        while(new_id.length()<3){
            new_id+=new_id.substring(new_id.length()-1,new_id.length());
        }
        //지운 후 마지막 예외처리
        if(new_id.length() > 0 && new_id.charAt(0)=='.') new_id = new_id.substring(1);
        if(new_id.length() > 0 && new_id.charAt(new_id.length()-1)=='.')  new_id = new_id.substring(0,new_id.length()-1);
        return new_id;
    }
}

 

정규식을 이용해 특정 문자와 숫자, 특수문자들을 제외해 지우는 것이 정규식을 이용하니 무난한 과정이었다.

 

그리고 15글자만 남겼을때 마지막에 .이 오는 상황이 특수한 예외여서 그것을 잘 처리해주니 무난한 문항이 되었다.