반응형
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/72410
풀이 :
정규식을 잘 알았더라면 아주 간단하게 풀수있었을것 같지만... 정규식을 잘몰라 정규식은 쓸수 있는데로만 사용하고,
나머지는 그냥 짜게되었다...
이전 회사에서도 아래 구조 처럼 사용해봐서 메서드를 한번에 호출해서 사용했다.
class Solution {
public String solution(String new_id) {
String answer = new makeNewId(new_id)
.toLowerCase()
.filterChar()
.toSingleDot()
.removeDot()
.checkBlank()
.lengthCheck()
.removeLastDot()
.addLength()
.getNewId();
return answer;
}
private static class makeNewId{
String newId;
public makeNewId(String new_id) {
newId = new_id;
}
private makeNewId toLowerCase(){
newId = newId.toLowerCase();
return this;
}
private makeNewId filterChar(){
newId = newId.replaceAll("[^a-z0-9._-]", "");
return this;
}
private makeNewId toSingleDot(){
while (newId.indexOf("..") != -1){
newId = newId.replace("..",".");
}
return this;
}
private makeNewId removeDot(){
if (!newId.isEmpty() && newId.charAt(0) == '.'){
newId = newId.substring(1);
}
this.removeLastDot();
return this;
}
private makeNewId checkBlank(){
newId = newId.isEmpty() ? "a" : newId;
return this;
}
private makeNewId lengthCheck(){
if(newId.length() >= 16){
newId = newId.substring(0, 15);
}
this.removeLastDot();
return this;
}
private makeNewId removeLastDot(){
if (!newId.isEmpty() && newId.charAt(newId.length() - 1) == '.'){
newId = newId.substring(0, newId.length() - 1);
}
return this;
}
private makeNewId addLength(){
if(newId.length() <3){
while(newId.length() < 3){
newId += newId.charAt(newId.length() - 1);
}
}
return this;
}
String getNewId(){
return newId;
}
}
}
반응형
'Java > Algorithm' 카테고리의 다른 글
[Algorithm] Programmers 로또의 최고순위와 최저순위 풀이 (0) | 2022.07.07 |
---|---|
[Algorithm] Programmers 신고 결과 받기 풀이 (0) | 2022.06.23 |
[Java-Algorithm] 백준 15652 N과 M(4) 풀이 (0) | 2021.08.04 |
[Java-Algorithm] 백준 15651 N과 M (3) 풀이 (0) | 2021.08.04 |
[Java-Algorithm] 백준 15650 N과 M (2) 풀이 (0) | 2021.08.04 |