728x90
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | class Solution { public static String solution(String new_id) { String answer = new KAKAOID(new_id) .replaceToLowerCase() .filter() .toSingleDot() .deleteStartEndDot() .noBlank() .noGreaterThan16() .noLessThan2() .getResult(); return answer; } private static class KAKAOID{ private String s; public KAKAOID(String s) { this.s = s; } private KAKAOID replaceToLowerCase() { s = s.toLowerCase(); return this; } private KAKAOID filter() { s = s.replaceAll("[^a-z0-9_.-]",""); return this; } private KAKAOID toSingleDot() { s = s.replaceAll("[.]{2,}","."); return this; } private KAKAOID deleteStartEndDot() { s = s.replaceAll("^[.]|[.]$",""); return this; } private KAKAOID noBlank() { s = s.isEmpty()? "a" : s; return this; } private KAKAOID noGreaterThan16() { s = (s.length()>15)? s.substring(0,15) : s; s = s.replaceAll("[.]$", ""); return this; } private KAKAOID noLessThan2() { StringBuilder sBuilder = new StringBuilder(s); while(sBuilder.length()<=2) { sBuilder = sBuilder.append(sBuilder.charAt(sBuilder.length()-1)); } s = sBuilder.toString(); return this; } public String getResult() { return s; } } } | cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 순위 검색 (HashMap, 이진탐색, LowerBound찾기, 비트연산) (0) | 2021.09.07 |
---|---|
[프로그래머스][JAVA] 메뉴 리뉴얼 (List<Map>, 재귀함수로 DFS) (0) | 2021.09.07 |
프로그래머스 - 숫자 야구 (완전탐색) (0) | 2019.12.13 |
프로그래머스 - 모의고사 (완전탐색) (0) | 2019.12.09 |
프로그래머스 - 가장 큰 수 (정렬) (0) | 2019.12.08 |