ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers / level1] 신규 아이디 추천
    Programmers/코딩테스트 풀이 2022. 1. 12. 23:04

    프로그래머스 / level1  / Java  / 신규 아이디 추천

    문제
        
        아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.
        아이디의 길이는 3자 이상 15자 이하여야 합니다.
        단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.

        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이 될 때까지 반복해서 끝에 붙입니다.
        
    public class RecommendIdSolution {
        public String solution(String new_id) {
            String answer = "";
    
            //1단계  - 전체 소문자 변환
            answer = new_id.toLowerCase();
    
            // 2단계   - 숫자, 소문자, - _ . 가 아닌 문자를 제거
            answer = answer.replaceAll("[^0-9a-z-_.]","");
    
            //3단계    - .가 2개 이상 반복 될 경우 치환
            answer = answer.replaceAll("[.]{2,}",".");
    
            //4단계    - .로 시작하거나, .로 끝나는 경우 제거
            answer = answer.replaceAll("^[.]|[.]$","");
    
            //5단계   - answer의 길이가 0인 경우, new_id의 길이만큼 a로 치환하여 answer에 저장
            if(answer.length() < 1) answer = new_id.replace(new_id, "a");
    
            //6단계   - answer의 길이가 15 이상인 경우 15번째 자리까지 잘라내고, 시작점이나 끝 자리가 . 인 경우 제거
            if(answer.length() > 15) answer = answer.substring(0,15).replaceAll("^[.]|[.]$","");
    
            //7단계  - answer의 길이가 2 이하인 경우 마지막 글자 lastOne을 answer에 결합
            if(answer.length() < 3) {
                String lastOne = answer.substring(answer.length()-1,answer.length());
                for(int i = answer.length() ; i < 3 ; i++){
                    answer = answer.concat(lastOne);
                }
            }
            return answer;
        }
    }
Designed by Tistory.