본문 바로가기
Algorithm

문자열처리_21 카카오 아이디추천

by forkballpitch 2021. 11. 9.
728x90
728x90

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

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

출처: https://www.youtube.com/watch?v=QgiUy-N_j3s&list=PL6YHvWRMtz7DhuPHdUZ0WLB5fNO729mbm 


public class Main {
    public static void main(String[] args) {
		 solution("문자열");
    }

    static boolean Static isValid(char c){
        if(Character.isLetterOrDigit(c)) return true;
        if(c == '-'|| c =='_'|| c=='.') return true;

        return false;
    }

    public static String solution(String new_id){
        StringBuilder answer = new StringBuilder();
        boolean lastDot = false;
        for(char ch : new_id.toCharArray()){
            if(isValid(ch) == false) continue;
            if(ch == '.'){
                if(answer.length() == 0 || lastDot) continue;
                lastDot = true;
            }else{
                lastDot = false;

            }
            ch = Character.toLowerCase(ch);
            answer.append(ch);

        }
        if(answer.length() >=16){
            answer.setLength(15);
        }

        if(answer.length() == 0){
            answer.append('a');
        }
        if(answer.charAt(answer.length()-1) == '.')
            answer.deleteCharAt(answer.length() - 1);

        if(answer.length() <= 2){
            char ch = answer.charAt(answer.length() - 1);
            while(answer.length() < 3){
                answer.append(ch);
            }
        }
        
        return answer.toString();
    }
}
728x90
728x90