괴발개발

[programmers] JAVA- 신규 아이디 추천 본문

Study/프로그래머스

[programmers] JAVA- 신규 아이디 추천

yousim 2022. 4. 26. 14:45
class Solution {
        public String solution(String new_id) {

            //1단계 아이디 모두 소문자로 변환
            new_id = new_id.toLowerCase();

            //2단계 아이디에서 알파벳 소문자, 0-9까지 숫자, 특수문자 . - _ 만 허용하고 나머지는 제거
            String id = "";
            for(int i = 0; i < new_id.length(); i++) {
                char ch = new_id.charAt(i);

                //소문자
                if(ch >= 'a' && ch <= 'z') {
                    id += String.valueOf(ch);
                }
                //숫자
                else if(ch >= '0' && ch <= '9') {
                    id += String.valueOf(ch);
                }
                // . - _ 특수문자 허용
                else if(ch == '.' || ch == '-' || ch == '_') {
                    id += String.valueOf(ch);
                }
            }

            //3단계 .. 이 연속될때는 . 하나로 바꾼다.

            for(int i = 0; i < id.length(); i++) {
                if(id.charAt(i) == '.') {
                    int j = i+1;
                    String dot = ".";

                    while(j != id.length() && id.charAt(j) == '.') {
                        dot += ".";
                        j++;
                    }

                    if(dot.length() > 1)
                        id = id.replace(dot, ".");
                }
            }

            //4단계 아이디가 .으로 시작하거나 . 으로 끝나면 이를 제거한다.

            if(id.startsWith(".") ) {
                id = id.substring(1, id.length());
            } else if(id.endsWith(".")) {
                id = id.substring(0, id.length()-1);
            }

            //5단계 아이디가 빈 문자열이라면 a를 대입.

            if(id.length() == 0) {
                id += "a";
            }

            //6단계 아이디의 길이가 16이상이라면 15이후부턴 자른다.

            if(id.length() >= 16) {
                id = id.substring(0, 15);
            }
            if (id.charAt(id.length() - 1) == '.') {
                id = id.substring(0, id.length() - 1);
            }

            //7단계 아이디의 길이가 2이하라면 마지막 문자를 아이디 길이가 3을 넘을때까지 더한다.

            while(id.length() < 3) {
                id += id.charAt(id.length()-1);
            }

            return id;
        }
    }

 

 

 

복사가 이제야 된다!

6단계에서 아이디를 자르면서 4단계 원칙을 위반 할 수 있는 가능성이 있으므로 

.을 제거할 코드를 추가해야한다. 

 

'Study > 프로그래머스' 카테고리의 다른 글

[programmers] JAVA - 핸드폰 번호 가리기  (0) 2022.04.26