It's easy, if you try

[프로그래머스] 신규 아이디 추천 (Java) / 문자열 / 정규 표현식 본문

알고리즘/자바(Java)

[프로그래머스] 신규 아이디 추천 (Java) / 문자열 / 정규 표현식

s5he2 2021. 4. 12. 22:14
반응형

문제

 

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

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

programmers.co.kr

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String answer = "";
        // 1단계
        answer = new_id.toLowerCase();
        // 2단계
        // answer = answer.replaceAll("[^-_.a-z0-9]","");
        String temp = "";
        for(int i=0; i< answer.length(); i++) {
            char c = answer.charAt(i);
            if(c == '_' || c == '-' || c== '.') {
                temp+=c;
            } else if (c <= 'z' && c >= 'a') {
                temp += c;
            } else if (c <= '9' && c >= '0') {
                temp += c;
            }
        } 
        answer = temp;
        // 3단계
        // 정규표현식
        // answer = answer.replaceAll("[.]{2,}",".");
        char pre = answer.charAt(0);
        temp = pre+"";
        for(int i=1; i< answer.length(); i++) {
            char c = answer.charAt(i);
            if(c != '.') {
                temp += c;
            } else if (c == '.' && pre != '.') {
                temp += c;
            }
            pre = c;
        } 
        answer = temp;
        
        
        // 4단계
        // 정규표현식
        // answer = answer.replaceAll("^[.]|[.]$","");
        temp = "";
        for(int i=0; i< answer.length(); i++) {
            char c = answer.charAt(i);
            if(c == '.' && i == 0) continue;
            if(c == '.' && i == answer.length()-1) continue;
            temp += c;
        } 
        answer = temp;
        // 5단계
        if(answer.equals("")) {
            answer = "aaa";
        }
        
        // 6단계 
        if(answer.length() >= 16) {
            answer = answer.substring(0, 15);
            answer = answer.replaceAll("[.]$","");
        }
        
        // 7단계
        while(answer.length() < 3) {
            // answer += answer.substring(answer.length()-1, answer.length());
            answer += answer.charAt(answer.length()-1);
        }
        return answer;
    }
}

^[.] => .으로 시작한다면

[.]$=> .으로 끝난다면

[^-_.a-z0-9] => -, _ , ., 소문자, 숫자 중에 없으면 (-_. 순서 바뀌면 틀림 !)

반응형
Comments