Algorithm & SQL/Programmers

[Programmers Lv.1 / Java] 신규 아이디 추천

김룹 2024. 3. 25. 15:45

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

👇 내가 작성한 코드

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String answer = new_id.toLowerCase();
        
        answer = answer.replaceAll("[^-_.a-z0-9]", ""); // 2단계
        answer = answer.replaceAll("[.]{2,}", "."); // 3단계
        answer = answer.replaceAll("^[.]|[.]$", ""); // 4단계
        
        // 5단계
        if(answer.equals("")) answer += "a";
        
        // 6단계
        if(answer.length() >= 16) {
            answer = answer.substring(0, 15);
            answer = answer.replaceAll("[.]$", "");
        }
        
        // 7단계
        if(answer.length() <= 2) {
            while(answer.length() < 3) answer += answer.charAt(answer.length() - 1);
        }
        
        return answer;
    }
}

 

 

느낀 점 및 정리 ✍️

1. 단계 별로 진행하였고, replaceAll과 정규표현식을 사용하였다.

2. [^-_.a-z0-9] ^ 다음에 오는 정규표현식이 아닌 문자들을 공백으로 바꿔주었다. 

3. {} 는 문자가 나오는 횟수. {2,} 은 적어도 2번 나온다는 것을 의미한다

4. ^[.]|[.]$ 는 .으로 시작 or 끝나는 것을 의미함

5. 조금만 안해도 까먹는 정규표현식 ㅠ 달달 외워야겠다.... 너무 편하다 !