3 Jul 2021
2021 카카오 신규 아이디 추천 (정규식 활용)[Java]
2021 카카오 신규 아이디 추천 (정규식 활용)[Java]
2021 카카오 신규아이디 추천은 문자열과 정규식의 기본을 알고 있는지 물어보는 문제이다
기본적인 문자열 관련 메소드로 풀어도 되지만 정규식을 사용할 경우 훨씬 간결하게 풀 수 있다.

class Solution {
public String solution(String new_id) {
String answer = "";
}
}
1단계 대문자 -> 소문자 치환
new_id=new_id.toLowerCase();
2단계 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거
빼기,밑줄,마침표,소문자 검출 => [-_.a-z0-9]* 별표시는 앞의 정규식이 0회 이상 반복
new_id=new_id.replaceAll("[^-_.a-z0-9]*","");
3단계 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
[.] 마침표가 {2,} 2글자 이상 반복 되면 마침표로 교체
정규식표현: [.]{2,} regexp{n,} <= regexp 가 n회 반복된다
new_id=new_id.replaceAll("[.]{2,}",".");
4단계 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
문자열의 처음 ^
문자열의 마지막 $
new_id=new_id.replaceAll("^[.]|[.]$","");
5단계 생략
6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
if(new_id.length()>15){
new_id=new_id.substring(0,15);
new_id=new_id.replaceAll("^[.]|[.]$","");
}
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
while(new_id.length()<=2){
new_id+=new_id.charAt(new_id.length()-1);
}
전체코드
class Solution {
public String solution(String new_id) {
String answer = "";
new_id=new_id.toLowerCase();
new_id=new_id.replaceAll("[^-_.a-z0-9]*","");
new_id=new_id.replaceAll("[.]{2,}",".");
new_id=new_id.replaceAll("^[.]|[.]$","");
if(new_id.equals("")){
new_id="a";
}
if(new_id.length()>15){
new_id=new_id.substring(0,15);
new_id=new_id.replaceAll("^[.]|[.]$","");
}
while(new_id.length()<=2){
new_id+=new_id.charAt(new_id.length()-1);
}
answer=new_id;
return answer;
}
}