프로그래머스(Level1-3)신규 아이디 추천(정규식으로 풀기)

LEE ·2022년 2월 1일
0
class Solution {
    public String solution(String new_id) {
        String answer = new_id.toLowerCase(); // 1단계

        answer = answer.replaceAll("[^-_.a-z0-9]", ""); // 2단계
        answer = answer.replaceAll("[.]{2,}", "."); // 3단계
        answer = answer.replaceAll("^[.]|[.]$", "");    // 4단계
        
        if (answer.equals("")) {    // 5단계
            answer += "a";
        }

        if (answer.length() >= 16) {     // 6단계
            answer = answer.substring(0, 15);
            answer = answer.replaceAll("[.]$","");
        }

        if (answer.length() <= 2) {  // 7단계
            while (answer.length() < 3) {
                answer += answer.charAt(answer.length()-1);
            }
        }

        return answer;
    }
}

다른풀이를 찾던중 정규식으로 푼 답이있었다. 사실 이방법으로 풀수있다고는 생각도 못했다.
풀이를 하면서 기억하려고 가져왔습니다.
풀이:
정규식을 사용하기 위해서는 replace 가 아닌 replaceAll()을 사용해야 활용하기 쉽습니다.
정규식을 사용하면 간단하게 바꿀수 있지만 그만큼 가독성이 떨어진다고 합니다.

1단계 소문자로 변경
2단계 []안에있는 것을 찾는 것 그러나 ^이 붙으면 아닌 것들 찾아서 변경
3단계 []{2}이면 []안에 것 2번반복된 것 찾기 이기만
{2,}이거면 2 이상인 것 찾기
4단계[] 앞에 ^ 붙으면 맨앞 ,뒤에 $ 붙으면 맨뒤
5단계 공백일때 a 추가
6단계 [.]이 맨뒤일때 공백으로 변경
7단계 글자수 2이하일 때 맨뒷글자 반복

0개의 댓글