티스토리 뷰

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

 

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

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

programmers.co.kr

2021 KAKAO BLIND RECRUITMENT

 

💡 정규표현식(regex) 을 알고 있다면 훨씬 깔끔하게 문제를 풀 수 있다! 

 

유용한 정규표현식

Regular Expression (Regex) Description
^regex regex로 문장을 시작하는지
regex$ regex로 문장이 끝나는지
[abc] a, b, c 중 문자 1개
[abc][vz] a, b, c 중에 문자 1개와 v, z 중 문자 1개의 조합
[^abc] a, b, c 를 제외한 문자 1개
[a-z] a-z 사이의 문자 1개
x|z x또는 z
* 0회 이상 반복
+ 1회 이상 반복
? 0 또는 1회만
{X} X회 반복
{X,} X회 이상 반복
{X, Y} X~Y 사이의 수만큼 반복

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
    public String solution(String new_id) {
 
        // 1. 소문자로 치환
        new_id = new_id.toLowerCase();
        
        // 2. 알파벳 소문자, 숫자, -, _, . 외의 문자 제거
        new_id = new_id.replaceAll("[^a-z0-9-_.]""");
        
        // 3. 마침표 연속된 부분을 하나의 마침표로 치환
        new_id = new_id.replaceAll("[.]{2,}"".");
        
        // 4. 처음이나 끝에 위치하는 마침표 제거
        new_id = new_id.replaceAll("^[.]""");
        new_id = new_id.replaceAll("[.]$""");
        
        // 5. 아이디가 빈 문자열이라면 "a" 대입
        if(new_id.length()==0) new_id = "a";
        
        // 6. 길이가 16자 이상이면 15번째 이후의 문자 제거
        //   + 제거 후 아이디가 마침표로 끝나면 마침표 제거
        if(new_id.length()>=16) new_id = new_id.substring(015);
        new_id = new_id.replaceAll("[.]$""");
        
        // 7. 길이가 2자 이하라면 아이디 맨 마지막 문자를 길이가 3자가 될때까지 붙이기
        StringBuilder sb = new StringBuilder(new_id);
        while(sb.length()<3) {
            sb.append(sb.charAt(sb.length()-1));
        }
        
        return sb.toString();
    }
}
cs

 

 

 

 

 

참고

https://codechacha.com/ko/java-regex/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함