티스토리 뷰
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
- 신규아이디추천
- 백준
- 15686
- 하노이 탑
- 게리맨더링
- Regex
- 순열
- 알고리즘
- recursion
- generic
- gof
- 재귀
- Stack
- 4796
- 와일드카드
- 디자인 패턴
- 백트래킹
- 프로그래머스
- 조합
- 11729
- BFS
- OOP
- 11659
- 구간 합 구하기
- 래퍼 클래스
- java
- 제네릭
- Wrapper Class
- 2529
- 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 | 31 |
글 보관함