문제
문제링크
접근
- 문자열에 대해 이것저것 연산해보는 문제이다.
- 정규식을 이용해서 풀이하면 매우 간단하다
- if문보다 삼항연산이 더 시간이 짧기 때문에 간단한 조건은 최대한 삼항연산자를 쓰려고 하는데 오히려 가독성이 떨어진 것 같기도 하다
소스 코드
class Main {
public static void main(String[] args) throws Exception {
String new_id = "...!@BaT#*..y.abcdefghijklm";
Solution sol = new Solution();
System.out.println("result : " + sol.solution(new_id));
}
}
class Solution {
public String solution(String new_id) {
String answer = new_id;
answer = answer.toLowerCase();
answer = answer.replaceAll("[^a-z0-9-_.]", "");
while (answer.contains("..")) {
answer = answer.replace("..", ".");
}
answer = answer.length() < 1? answer : answer.substring(0, 1).equals(".") ? answer.substring(1) : answer;
answer = answer.length() < 1? answer : answer.substring(answer.length()-1, answer.length()).equals(".") ? answer.substring(0, answer.length()-1) : answer;
answer = answer.equals("") ? "a" : answer;
answer = answer.length() >= 16 ? answer.substring(0, 15) : answer;
answer = answer.length() != 15 ? answer
: answer.substring(14, 15).equals(".") ? answer.substring(0, 14) : answer;
answer = answer.length() == 1? answer + answer + answer : answer.length() == 2? answer + answer.substring(1, 2) : answer;
return answer;
}
}