-
프로그래머스 : 신규 아이디 추천코딩테스트 문제 풀이/프로그래머스 2023. 11. 23. 00:09
프로그래머스 첫 번쨰
다른사람 코드 _class Solution { public String solution(String new_id) { String s = new KAKAOID(new_id) .replaceToLowerCase() .filter() .toSingleDot() .noStartEndDot() .noBlank() .noGreaterThan16() .noLessThan2() .getResult(); return s; } private class KAKAOID { private String s; 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 noStartEndDot() { s = s.replaceAll("^[.]|[.]$", ""); return this; } private KAKAOID noBlank() { s = s.isEmpty() ? "a" : s; return this; } private KAKAOID noGreaterThan16() { if (s.length() >= 16) { s = s.substring(0, 15); } s = s.replaceAll("[.]$", ""); return this; } private KAKAOID noLessThan2() { StringBuilder sBuilder = new StringBuilder(s); while (sBuilder.length() <= 2) { sBuilder.append(sBuilder.charAt(sBuilder.length() - 1)); } s = sBuilder.toString(); return this; } private String getResult() { return s; } } }
클래스의 사용과 정규식의 다양한 사용방법을 배울 수 있는 코드였다!!
정규식 📝🤓
- 문자 2개 이상
"[.]{2,}"
1-1. 문자 2개 :"[.]{2}"
1-2. 문자 2개 이상 10개 이하:"[.]{2,10}"
- !로 시작 :
"^[!]"
- !로 끝남 :
"[!]$"
내 코드
머쓱;
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 = removeRangeDot(new_id); // 4 new_id = removeFirstDot(new_id); new_id = removeLastDot(new_id); // 5 if (new_id.length() == 0) new_id = "aaa"; // 6 if (new_id.length() > 15) { new_id = new_id.substring(0, 15); new_id = removeLastDot(new_id); } // 7 while (new_id.length() < 3) { new_id += new_id.substring(new_id.length() - 1); } return new_id; } public String removeRangeDot(String id) { while (id.contains("..")) id = id.replace("..", "."); return id; } public String removeFirstDot(String id) { while (id.length() > 0 && id.charAt(0) == '.') id = id.substring(1); return id; } public String removeLastDot(String id) { while (id.length() > 0 && id.charAt(id.length() - 1) == '.') id = id.substring(0, id.length() - 1); return id; } }
'코딩테스트 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스: 2016년 (0) 2023.11.23 프로그래머스: 햄버거 (0) 2023.11.23 프로그래머스 : 신고 결과 받기 (0) 2023.11.23 프로그래머스: 옹알이(2) (0) 2023.11.23 프로그래머스: 문자열 내 마음대로 정렬하기 (0) 2023.11.23 - 문자 2개 이상