[프로그래머스/Level1] 신규 아이디 추천

SeokHyun·2022년 7월 3일
0

프로그래머스

목록 보기
14/32

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/72410

문제 접근

이 문제는 문자열 조작 문제로 정규식을 쓸 수 있냐 없냐고 갈리는 것 같다.
정규식만 쓸 줄 안다면 단계별로 진행했을 때 문제 없을 것이다.

정규식을 모른다면 아래 링크를 참고하자!
https://velog.io/@seob/regex-is-easy

소스 코드

class Solution {
    public String solution(String new_id) {
        String fixedId = new_id.toLowerCase() //알파벳 소문자 치환
                                .replaceAll("[^a-z0-9_.-]", "") //소문자, 숫자, "-", "_", "." 제외한 모든 문자 제거
                                .replaceAll("[.]{2,}", ".") //"." 2번 이상 반복되면 "."으로 치환
                                .replaceAll("^[.]|[.]$", ""); //문자열 시작 or 끝에 있는 "." 제거
        
        //빈 문자열일 경우 "a" 대입
        if (fixedId.length() == 0) {
            fixedId = "a";
        }
        
        //16자 이상이면 15자까지 자르고 문자열 시작 or 끝에 있는 "." 제거
        if (fixedId.length() >= 16) {
            fixedId = fixedId.substring(0, 15)
                            .replaceAll("^[.]|[.]$", "");
        }
        
        //2자 이하면 끝 문자를 길이가 3이 될 때까지 붙여줌
        String appendStr = fixedId.substring(fixedId.length() - 1, fixedId.length());
        for (int i = fixedId.length(); i < 3; i++) {
            fixedId += appendStr;
        }
        
        return fixedId;
    }
}
profile
SI를 넘어 백엔드 엔지니어를 향하여

0개의 댓글