본문 바로가기

알고리즘/프로그래머스

[프로그래머스] 2021 kakao blind 신규 아이디

문제링크 : programmers.co.kr/learn/courses/30/lessons/72410?language=java

 

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

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

programmers.co.kr

문제에서 친절히 1~7단계 하라는 것을 그대로 코드로 옮기면 된다.

정규표현식을 잘 모르고 문자열을 다루지 못해서 문자 하나씩 바꾸어주었다. 문자열의 길이를 보니 시간문제는 없었다고 판단함.

아는 함수를 활용했다. 

class Solution {
    public String solution(String new_id) {
    
        //1
		new_id = new_id.toLowerCase();
		//2
        for(int i=0;i<new_id.length();i++){
        	char x = new_id.charAt(i);
        	if(!((x>='a' && x<='z') || (x>='0' && x<='9') || (x=='-') || (x=='_') || (x=='.'))){
        		new_id = new_id.replace(x+"", "");
        		i--;
        	}
        }
        //3
        boolean isEnd=false;
        while(!isEnd){
        	isEnd= true;
        	if(new_id.contains("..")){
        		new_id = new_id.replace("..", ".");
        		isEnd=false;
        	}
        }
        //4
        if(new_id.charAt(0)=='.'){
        	new_id = new_id.substring(1);
        }
        if(new_id.length()-1 >=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);
        	if(new_id.length()-1 >=0 && new_id.charAt(new_id.length()-1)=='.'){
            	new_id = new_id.substring(0, new_id.length()-1);
            }
        }
        //7
        if(new_id.length()<=2){
        	while(new_id.length()!=3){
        		new_id = new_id + new_id.charAt(new_id.length()-1);
        	}
        }
        return new_id;
    }
}