문제링크 : programmers.co.kr/learn/courses/30/lessons/72410?language=java
문제에서 친절히 1~7단계 하라는 것을 그대로 코드로 옮기면 된다.
정규표현식을 잘 모르고 문자열을 다루지 못해서 문자 하나씩 바꾸어주었다. 문자열의 길이를 보니 시간문제는 없었다고 판단함.
아는 함수를 활용했다.
class Solution {
public String solution(String new_id) {
//1
new_id = new_id.toLowerCase();
//2
for(int i=0;i<new_id.length();i++){
char x = new_id.charAt(i);
if(!((x>='a' && x<='z') || (x>='0' && x<='9') || (x=='-') || (x=='_') || (x=='.'))){
new_id = new_id.replace(x+"", "");
i--;
}
}
//3
boolean isEnd=false;
while(!isEnd){
isEnd= true;
if(new_id.contains("..")){
new_id = new_id.replace("..", ".");
isEnd=false;
}
}
//4
if(new_id.charAt(0)=='.'){
new_id = new_id.substring(1);
}
if(new_id.length()-1 >=0 && new_id.charAt(new_id.length()-1)=='.'){
new_id = new_id.substring(0, new_id.length()-1);
}
//5
if(new_id.length()==0){
new_id = "a";
}
//6
if(new_id.length()>=16){
new_id = new_id.substring(0,15);
if(new_id.length()-1 >=0 && new_id.charAt(new_id.length()-1)=='.'){
new_id = new_id.substring(0, new_id.length()-1);
}
}
//7
if(new_id.length()<=2){
while(new_id.length()!=3){
new_id = new_id + new_id.charAt(new_id.length()-1);
}
}
return new_id;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2021 dev-matching 로또의 최고 순위와 최저 순위 [JAVA] (0) | 2021.05.01 |
---|---|
[프로그래머스] kakao 2021년 블라인드 (광고삽입) [JAVA] (0) | 2021.04.18 |
[프로그래머스] 2021 카카오 블라인드 합승택시요금 [JAVA] (0) | 2021.03.22 |
[프로그래머스] 2021 카카오 블라인드 메뉴리뉴얼 [JAVA] (0) | 2021.03.16 |
[프로그래머스] Lv2 타겟넘버 (0) | 2020.11.05 |