알고리즘/프로그래머스 Level1

[프로그래머스,Java] Level1 신규 아이디 추천

류창 2021. 8. 3. 18:11
반응형

문제분석 할것도없이 문제 설명대로 시키는대로만 하면댄다.

 

단순히, 문자열다루는 문법을 얼마나 아느냐 테스트다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
    public String solution(String new_id) {
        String answer = "";
        //1단계
        new_id=new_id.toLowerCase();
        //2단계
        new_id=new_id.replaceAll("[^0-9a-z_.-]",""); //조건을 제외한목록
        //3단계
        new_id=new_id.replaceAll("[.]+",".");//연속된 마침표 .로 치환
        //4단계
        if(new_id.startsWith(".")){
            new_id=new_id.substring(1);
        }
        if(new_id.endsWith(".")){
            new_id=new_id.substring(0,new_id.length()-1);
        }
        //5단계
        if(new_id.equals("")){
            new_id="a";
        }
        //6단계
        if(new_id.length()>=16){
            new_id=new_id.substring(0,15);
        }
        if(new_id.endsWith(".")){
            new_id=new_id.substring(0,new_id.length()-1);
        }
        //7단계
        while(new_id.length()<3){
            new_id+=new_id.charAt(new_id.length()-1);
        }
        
        answer=new_id;
        return answer;
    }
}
cs

풀이

toLowerCase() : 모든문자 소문자 바꿔준다. (반대로 toUpperCase()가 있다)

 

replaceAll() : replace 와는다르게 (문자열범위 ,새로 나타낼문자) 형식으로 여러문자열을 바꾸는 함수다.

                정규표현식을 사용하니 자주쓰이는건 알아두자.

정규표현식 : [^문자] = 입력한 문자들 제외한 모든문자  

                 [문자]+ = 문자가 1개이상인건 모두 ex)[a]+ -> a, aa, aaa...

SubString() : 문자열을 자를때 사용한다. 첫번째 파라미터엔 시작값, 두번째 파라미터엔 끝값을넣어준다.

반응형