[Java] 프로그래머스 신규 아이디 추천

송규빈·2022년 5월 5일
0

📘 문제

https://programmers.co.kr/learn/courses/30/lessons/72410

💡 풀이

단순 구현 문제이기 때문에 문제에서 나오는 단계별로 구현하면 끝난다.

💻 코드

class Solution {
    public String solution(String new_id) {
        String answer = "";

        // 1단계
        // 소문자 치환
        answer = new_id.toLowerCase();
        
       
         // 2단계
         // 소문자, 숫자, -, _ , . 만 사용 가능
        
        String tmpAnswer = answer;
        for(int i = 0; i < tmpAnswer.length(); i++){
            char tmp = tmpAnswer.charAt(i);
            if(Character.isLowerCase(tmp)||Character.isDigit(tmp)|| tmp=='-'|| tmp=='.'||tmp=='_') continue;
            answer = answer.replace(String.valueOf(tmp),"");
        }
        
        // 3단계
        while(true){
            if(!answer.contains("..")) break;
            answer = answer.replace("..",".");
        }
        
        // 4단계
        if(answer.length()>0 && answer.charAt(0)=='.') answer = answer.substring(1);
        if(answer.length()>0 && answer.charAt(answer.length()-1)=='.') answer = answer.substring(0,answer.length()-1);
        
        // 5단계
        if(answer.isEmpty()) answer+="a";
        
        // 6단계
        if(answer.length()>=16) answer = answer.substring(0,15);
        if(answer.charAt(answer.length()-1)=='.') answer = answer.substring(0,answer.length()-1);
        
        // 7단계
        if(answer.length()<=2){
            while(true){
                if(answer.length()==3) break;
                answer+=String.valueOf(answer.charAt(answer.length()-1));
            }
        }
        
        
        return answer;
    }
}

😂 아쉬운 점

정규 표현식을 사용하여 풀었다면 훨씬 더 간단하게 구현했을텐데...

다음 번에는 정규 표현식을 사용해서 풀어봐야겠다 😊

결과

profile
🚀 상상을 좋아하는 개발자

0개의 댓글