2021 KAKAO BLIND RECRUITMENT
https://programmers.co.kr/learn/courses/30/lessons/72410
class Solution {
public String solution(String new_id) {
String answer;
// 1단계
answer = new_id.toLowerCase();
// 2단계
String temp = "";
for(int i = 0; i < answer.length(); i++){
char x = answer.charAt(i);
if(Character.isLetter(x) || Character.isDigit(x) || x == '-' || x == '_' || x == '.'){
temp += x;
}
}
answer = temp;
// 3단계
temp = "";
int idx = 0;
while(idx < answer.length()){
char x = answer.charAt(idx);
if(x == '.'){
int count = 0;
// 다음 문자도 .인지 확인한다
for(int i = idx + 1; i < answer.length(); i++){
if(answer.charAt(i) == '.')
count++;
else
break;
}
// count > 0이면 .가 연속해서 등장 -> 하나로 치환
if(count > 0){
temp += '.';
// .가 등장하지 않는 지점으로 인덱스 이동
idx += count + 1;
}
// .가 하나만 등장
else{
temp += x;
idx += 1; // 다음 인덱스 탐색
}
}
else{
temp += x;
idx += 1; // 다음 인덱스 탐색
}
}
answer = temp;
// 4단계
temp = "";
if(answer.startsWith(".")){
if(answer.length() > 1)
temp = answer.substring(1, answer.length());
}
else{
temp = answer;
}
if(answer.endsWith(".")){
if(temp.length() > 1)
temp = temp.substring(0, temp.length()-1);
}
answer = temp;
// 5단계
if(answer.length() == 0){
answer += 'a';
}
// 6단계
if(answer.length() >= 16){
answer = answer.substring(0, 15);
if(answer.endsWith("."))
answer = answer.substring(0, answer.length() - 1);
}
// 7단계
if(answer.length() <= 2){
char x = answer.charAt(answer.length()-1);
while(answer.length() < 3){
answer += x;
}
}
// return
return answer;
}
}