반응형
Notice
Recent Posts
Recent Comments
Link
It's easy, if you try
[프로그래머스] 신규 아이디 추천 (Java) / 문자열 / 정규 표현식 본문
반응형
문제
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
// 1단계
answer = new_id.toLowerCase();
// 2단계
// answer = answer.replaceAll("[^-_.a-z0-9]","");
String temp = "";
for(int i=0; i< answer.length(); i++) {
char c = answer.charAt(i);
if(c == '_' || c == '-' || c== '.') {
temp+=c;
} else if (c <= 'z' && c >= 'a') {
temp += c;
} else if (c <= '9' && c >= '0') {
temp += c;
}
}
answer = temp;
// 3단계
// 정규표현식
// answer = answer.replaceAll("[.]{2,}",".");
char pre = answer.charAt(0);
temp = pre+"";
for(int i=1; i< answer.length(); i++) {
char c = answer.charAt(i);
if(c != '.') {
temp += c;
} else if (c == '.' && pre != '.') {
temp += c;
}
pre = c;
}
answer = temp;
// 4단계
// 정규표현식
// answer = answer.replaceAll("^[.]|[.]$","");
temp = "";
for(int i=0; i< answer.length(); i++) {
char c = answer.charAt(i);
if(c == '.' && i == 0) continue;
if(c == '.' && i == answer.length()-1) continue;
temp += c;
}
answer = temp;
// 5단계
if(answer.equals("")) {
answer = "aaa";
}
// 6단계
if(answer.length() >= 16) {
answer = answer.substring(0, 15);
answer = answer.replaceAll("[.]$","");
}
// 7단계
while(answer.length() < 3) {
// answer += answer.substring(answer.length()-1, answer.length());
answer += answer.charAt(answer.length()-1);
}
return answer;
}
}
^[.] => .으로 시작한다면
[.]$=> .으로 끝난다면
[^-_.a-z0-9] => -, _ , ., 소문자, 숫자 중에 없으면 (-_. 순서 바뀌면 틀림 !)
반응형
'알고리즘 > 자바(Java)' 카테고리의 다른 글
[SW Expert Academy/ SWEA] 벽돌 깨기 (Java) / 구현 / 중복 순열 (0) | 2021.04.14 |
---|---|
[백준/boj] 2458: 키 순서 (Java) / 플로이드 와샬 (0) | 2021.04.14 |
[백준/boj] 1915: 가장 큰 정사각형 (Java) / DP (0) | 2021.04.07 |
[백준/boj] 1520: 내리막 길 / BFS / Priority Queue / DP (2) | 2021.04.06 |
[백준/boj] 2573: 빙산 (Java) / BFS / 구현 (0) | 2021.04.05 |
Comments