티스토리 뷰
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(0, 15);
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 |
참고
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [JAVA] 프로그래머스 짝지어 제거하기 (0) | 2021.12.23 |
|---|---|
| [JAVA] 프로그래머스 키패드 누르기 (0) | 2021.12.21 |
| [JAVA] 프로그래머스 숫자 문자열과 영단어 (0) | 2021.12.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 4796
- Stack
- 백준
- 제네릭
- 11729
- gof
- Wrapper Class
- 15686
- java
- 래퍼 클래스
- 게리맨더링
- 하노이 탑
- 2529
- 신규아이디추천
- 디자인 패턴
- 재귀
- Regex
- 와일드카드
- 프로그래머스
- 11659
- generic
- 조합
- 구간 합 구하기
- recursion
- 알고리즘
- OOP
- 백트래킹
- BFS
- 순열
- CS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함