[Java] 프로그래머스 : 신규 아이디 추천

YENI·2021년 6월 14일

✔️문제 링크

https://programmers.co.kr/learn/courses/30/lessons/72410

💻 코드

import java.util.*;
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("")){
            answer += "a";
        }//5단계
        if(answer.length() >= 16){
            answer = answer.substring(0, 15);
            //정규 표현식 사용
            answer = answer.replaceAll("[.]$", "");
        }//6단계
        if(answer.length() <= 2){
            while(answer.length() < 3){
                answer += answer.charAt(answer.length() - 1);
            }
        }//7단계
        return answer;
    }
}

💡 기억할 부분

- toLowerCase()

소문자로 변경해주는 함수

- 정규 표현식

^ : 문자열 시작
$ : 문자열 종료
| : OR 연산
, : 이상, 이하 표현
[] : 문자의 집합이나 범위 , ^가 존재하면 not을 의미
{} : 횟수 또는 범위

✔️적용

2단계

new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.

[^-_.a-z0-9]

3단계

new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.

[.]{2,}

4단계

new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.

^[.]|[.]$

6단계

만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.

[.]$

0개의 댓글