2021 KAKAO BLIND RECRUITMENT신규 아이디 추천 - JAVA

2025. 2. 25. 12:17백준 및 프로그래머스/프로그래머스 LV 1

문제 설명

1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
     만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.

*핵심 로직* 

 

*이번 문제는 단순 구현 문제인 것 같습니다. 실제로 저기에 나와있는 순서대로 무난하게 잘 구현한다면 정답을 쉽게 가져올 수 있습니다.

 

class Solution {
    public String solution(String new_id) {
        //1
        String answer = new_id.toLowerCase();
        
        // 2
        String answer2 ="";
        for(int i = 0; i<answer.length(); i++){
            char word = answer.charAt(i);
            if(word>='a' && word<='z'){
                answer2+=word;
            }else if(word>='0' && word<='9'){
                answer2+=word;
            }else if(word =='-' || word == '_' || word =='.'){
                answer2+=word;
            }
        }
        //3
        String answer3 ="";
        int idx = 0 ;
        while (answer2.contains("..")){
            answer2 = answer2.replace("..",".");
        }
        
        //4
        if(answer2.length() > 0){
            if(answer2.charAt(0) == '.'){
                answer2 = answer2.substring(1,answer2.length());
            }
        }
        if(answer2.length() > 0){
            if(answer2.charAt(answer2.length()-1) == '.'){
                answer2 = answer2.substring(0,answer2.length()-1);
            }
        }
        
        //5
        if(answer2.length() == 0){
            answer2+="a";
        }
        //6
        if(answer2.length() > 15){
            answer2 = answer2.substring(0,15);
            if(answer2.charAt(14) == '.'){
                answer2 = answer2.substring(0,14);
            }
        }
        
        //7
        if(answer2.length()<3){
            while (answer2.length()<3){
                answer2+=answer2.charAt(answer2.length()-1);
            }
        }
        return answer2;
    }
}

*3단계 구현과정에서 실수가 있지만 contains활용으로 해결할 수 있었습니다.