개발공부/코딩테스트 연습문제
[프로그래머스] 신규 아이디 추천
ku-na
2022. 1. 4. 11:47
문제 설명과 제한사항


풀이
class Solution {
public String solution(String new_id) {
String answer = new_id;
//대문자 -> 소문자
answer = answer.toLowerCase();
//사용불가 특수문자 제거
answer = answer.replaceAll("[^a-z0-9-_.]","");
//.연속사용 제거
answer = answer.replaceAll("[.]{2,1000}",".");
//처음과 마지막에 위치한 . 제거
if(answer.startsWith(".")) {
answer = answer.substring(1,answer.length());
}
if(answer.endsWith(".")){
answer = answer.substring(0,answer.length()-1);
}
//빈 문자열
if(answer.length() == 0) {
answer = "a";
}
//16자 이상
if(answer.length() > 15) {
answer = answer.substring(0,15);
if(answer.endsWith(".")){
answer = answer.substring(0,answer.length()-1);
}
}
if(answer.length() < 3){
while(answer.length() < 3){
answer = answer + answer.substring(answer.length()-1);
}
}
return answer;
}
}
++
잊고 있던 키워드
toLowerCase() : 문자열(String)에서 대문자를 소문자로 치환해주는 함수
<-> toUpperCase() : 문자열(String)에서 소문자를 대문자로 치환해주는 함수
replaceAll(String a, String b) : 문자열내부에서 모든 a문자열을 b로 치환해주는 함수
-> [^a-z0-9-_.] a~z 0~9, -, _, . 을 제외(^)한 모든 문자를 나타냈다.
-> [.]{2,1000} : .의 연속사용을 막기 위해 사용 .이 2~1000개 이상 반복되면 .으로 치환했다.
startsWith(String a) : 문자열 맨 앞에 a 가 있으면 true 반환
<-> endWith(String a) : 문자열 맨 뒤에 a 가 있으면 true 반환
substring(int a, int b) : 문자열 a번째 ~b-1번째 문자열로 반환
ex) String a = "abcdef";
a.substring(1,6) -> "bcdef"
잊고 있었던 문자열 내부 함수들의 사용으로 힘들었다.